明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1964|回复: 8

装饰设计中的[九厘板]绘图命令

[复制链接]
发表于 2011-7-22 19:19:44 | 显示全部楼层 |阅读模式
本帖最后由 gbhsu 于 2012-10-20 21:38 编辑

绘制九厘板
(defun c:jlb (/ p1 p2 dist ec1 ec2 ec3 ec4 key pt-tmp eh1 eh2 l1-l2 rlt
       vrl p-list pt-end)
  (command "undo" "group")
  (setvar "osmode" 255)
  (setvar "cmdecho" 0)
  (setq p1 (getpoint "\n输入九厘板第一点:"))
  (setq p2 (getpoint p1 "\n输入九厘板下一点:"))
  (setvar "osmode" 0)
  (command "line" p1 p2 "")
  (setq ang (angle p1 p2))
  (setq ang1 (+ ang (* pi 0.5)))
  (setq ec (entlast))
  (command "change" ec "" "p" "c" 2 "")
  (command "line" (polar p1 ang1 9) (polar p2 ang1 9) "")
  (setq ec1 (entlast))
  (command "change" ec1 "" "p" "c" 2 "")
  (setq eh1 (cdr (assoc 5 (entget ec1)))) ;第三条直线的句柄
  (setq dist (distance p1 p2)key T )
  (setq pt-end (polar p2 ang1 3))
  (if (<= dist 39)
    (setq key nil)
    (progn
      (setq pt1 (polar p1 ang1 3)
     pt2 (polar pt1 ang 33)
     pt3 (polar (polar pt1 ang 30) ang1 -3)
            pt4 pt2
     pt5 (polar pt4 ang 3)
     pt6 (polar pt3 ang 3)
     pt7 pt5
     pt8 (polar pt7 ang 3)
     pt9 (polar pt6 ang 3)
     pt10 pt8
     pt11 (polar pt7 ang1 3)
     pt12 (polar pt11 ang -3)
     pt13 pt7
     pt14 pt4
     pt15 (polar pt12 ang -3)
     pt16 (polar pt1 ang1 3)
     pt17 pt15
     pt18 (polar pt12 ang1 3)
     pt19 pt17
     pt20 pt12
     pt21 (polar pt18 ang 3)
     pt22 pt20
     pt23 pt11
     pt24 (polar pt21 ang 3)
     pt25 pt11
     pt26 pt10
  )
      
      (command ".pline" pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10
                 pt11 pt12 pt13 pt14 pt15 pt16 pt17 pt18
                 pt19 pt20 pt21 pt22 pt23 pt24 pt25 pt26)
    )
  )     ;end of if
  (while key
    (setq pt1 pt26
          dist (distance pt1 pt-end)
    )
   
    (if (> dist 39)
      (progn
(setq
     pt2 (polar pt1 ang 33)
     pt3 (polar (polar pt1 ang 30) ang1 -3)
            pt4 pt2
     pt5 (polar pt4 ang 3)
     pt6 (polar pt3 ang 3)
     pt7 pt5
     pt8 (polar pt7 ang 3)
     pt9 (polar pt6 ang 3)
     pt10 pt8
     pt11 (polar pt7 ang1 3)
     pt12 (polar pt11 ang -3)
     pt13 pt7
     pt14 pt4
     pt15 (polar pt12 ang -3)
     pt16 (polar pt15 ang -33)
     pt17 pt15
     pt18 (polar pt12 ang1 3)
     pt19 pt17
     pt20 pt12
     pt21 (polar pt18 ang 3)
     pt22 pt20
     pt23 pt11
     pt24 (polar pt21 ang 3)
     pt25 pt11
     pt26 pt10
  )
      (command  pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10
                 pt11 pt12 pt13 pt14 pt15 pt16 pt17 pt18
                 pt19 pt20 pt21 pt22 pt23 pt24 pt25 pt26)
      );end of progn
      (progn
      (setq pt2 pt-end
     pt3 pt1
     pt4 pt11
     pt5 pt24
     pt6 pt25
     pt7 (polar pt2 ang1 3)
     )  
      (setq key nil)
      (command pt2 pt3 pt4 pt5 pt6 pt7 "")
    ))
  )     ;end of while
  (setq ec2 (entlast))
  (command "change" ec2 "" "p" "c" 1 "")
  (setvar "osmode" 255)
  (command "undo" "end")
  (princ "\n感谢你使用立面绘制程序,有问题及时与燕川布衣联系.\nQQ:112100528")
  (princ)    ;静默退出
)


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2011-7-22 22:38:53 | 显示全部楼层
PL线有许多重合线,trim时肯定会出错的.有个简单办法就是程序最后加上explode,把PL线炸开.
 楼主| 发表于 2011-7-22 22:53:08 | 显示全部楼层
回复 ljpnb 的帖子

炸开后删除困难呀!
发表于 2011-7-23 10:08:09 | 显示全部楼层
GBHSU建议那中间的那直线是整的,只画那斜的那9根线
发表于 2011-7-23 11:05:20 | 显示全部楼层
本帖最后由 zhynt 于 2011-7-23 11:06 编辑

这个怎么样?

  1. (defun zx (pt ang / pt1 pt2 pt3 pt4 sen)
  2.   (setq        pt1 pt
  3.         pt2 (polar pt1 (+ ang (* 0.25 pi)) (* (sqrt 2) 3))
  4.         pt3 (polar pt2 (+ ang (* 0.75 pi)) (* (sqrt 2) 3))
  5.         pt4 (polar pt3 (+ ang (* 0.25 pi)) (* (sqrt 2) 3))
  6.   )
  7.   (command "PLINE" pt1 pt2 pt3 pt4 "")
  8.   (setq sen (entlast))
  9.   (command "change" sen "" "p" "c" 1 "")
  10.   (command "copy" sen "" pt1 (polar pt1 ang 3))
  11.   (command "copy" sen "" pt1 (polar pt1 ang 6))
  12. )
  13. (defun c:jlb ( )
  14.   (command "undo" "group")
  15.   (setvar "osmode" 255)
  16.   (setvar "cmdecho" 0)
  17.   (setq p1 (getpoint "\n输入九厘板第一点:"))
  18.   (setq p2 (getpoint p1 "\n输入九厘板下一点:"))
  19.   (setvar "osmode" 0)
  20.   (command "line" p1 p2 "")
  21.   (setq ang (angle p1 p2))
  22.   (setq ang1 (+ ang (* pi 0.5)))
  23.   (setq ec (entlast))
  24.   (command "change" ec "" "p" "c" 2 "")
  25.   (command "line" (polar p1 ang1 9) (polar p2 ang1 9) "")
  26.   (setq ec1 (entlast))
  27.   (command "change" ec1 "" "p" "c" 2 "")
  28.   (command "line" (polar p1 ang1 3) (polar p2 ang1 3) "")
  29.   (setq ec3 (entlast))
  30.   (command "change" ec3 "" "p" "c" 1 "")
  31.   (command "line" (polar p1 ang1 6) (polar p2 ang1 6) "")
  32.   (setq ec3 (entlast))
  33.   (command "change" ec3 "" "p" "c" 1 "")
  34.   (setq dist (distance p1 p2)
  35.         ang (angle p1 p2)
  36.         )
  37.   (if (and (<= dist 39) (> dist 9))
  38.     (zx (polar p1 ang (/ (- dist 9) 2)) ang)
  39.     (progn (setq n (fix (/ dist 39)))
  40.            (repeat n (zx (polar p1 ang (+ (* (1- n) 9)(* n 30))) ang) (setq n (1- n)))
  41.     )
  42.   )
  43.   (setvar "osmode" 255)
  44.   (command "undo" "end")
  45.   (princ
  46.     "\n本程序改编于燕川布衣,有问题及时与他或她联系.\nQQ:112100528"
  47.   )
  48.   (princ)                                                    ;静默退出
  49. )

评分

参与人数 1金钱 +20 收起 理由
gbhsu + 20 simple!

查看全部评分

 楼主| 发表于 2011-7-23 11:10:37 | 显示全部楼层
回复 zhynt 的帖子

很好。。。。
版权公开,大家随便改,随便use!
发表于 2011-7-23 11:17:19 | 显示全部楼层
效果:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1金钱 +20 收起 理由
gbhsu + 20 ........

查看全部评分

发表于 2011-7-23 16:30:30 | 显示全部楼层
本帖最后由 qcw911 于 2011-7-23 16:31 编辑

回复 zhynt 的帖子

能变更成输入命令后画好多个吗?
像院长那样
发表于 2011-7-23 16:59:52 | 显示全部楼层

  1. (defun zx (pt ang / pt1 pt2 pt3 pt4 sen)
  2.   (setq        pt1 pt
  3.         pt2 (polar pt1 (+ ang (* 0.25 pi)) (* (sqrt 2) 3))
  4.         pt3 (polar pt2 (+ ang (* 0.75 pi)) (* (sqrt 2) 3))
  5.         pt4 (polar pt3 (+ ang (* 0.25 pi)) (* (sqrt 2) 3))
  6.   )
  7.   (command "PLINE" pt1 pt2 pt3 pt4 "")
  8.   (setq sen (entlast))
  9.   (command "change" sen "" "p" "c" 1 "")
  10.   (command "copy" sen "" pt1 (polar pt1 ang 3))
  11.   (command "copy" sen "" pt1 (polar pt1 ang 6))
  12. )
  13. (defun c:jlb ()
  14.   (command "undo" "group")
  15.   (setvar "osmode" 255)
  16.   (setvar "cmdecho" 0)
  17.   (while (setq p1 (getpoint "\n输入九厘板第一点:"))
  18.     (setq p2 (getpoint p1 "\n输入九厘板下一点:"))
  19.     (setvar "osmode" 0)
  20.     (command "line" p1 p2 "")
  21.     (setq ang (angle p1 p2))
  22.     (setq ang1 (+ ang (* pi 0.5)))
  23.     (setq ec (entlast))
  24.     (command "change" ec "" "p" "c" 2 "")
  25.     (command "line" (polar p1 ang1 9) (polar p2 ang1 9) "")
  26.     (setq ec1 (entlast))
  27.     (command "change" ec1 "" "p" "c" 2 "")
  28.     (command "line" (polar p1 ang1 3) (polar p2 ang1 3) "")
  29.     (setq ec3 (entlast))
  30.     (command "change" ec3 "" "p" "c" 1 "")
  31.     (command "line" (polar p1 ang1 6) (polar p2 ang1 6) "")
  32.     (setq ec3 (entlast))
  33.     (command "change" ec3 "" "p" "c" 1 "")
  34.     (setq dist (distance p1 p2)
  35.           ang  (angle p1 p2)
  36.     )
  37.     (if        (and (<= dist 39) (> dist 9))
  38.       (zx (polar p1 ang (/ (- dist 9) 2)) ang)
  39.       (progn (setq n (fix (/ dist 39)))
  40.              (repeat n
  41.                (zx (polar p1 ang (+ (* (1- n) 9) (* n 30))) ang)
  42.                (setq n (1- n))
  43.              )
  44.       )
  45.     )
  46.     (setvar "osmode" 255)
  47.     (command "undo" "end")
  48.   )
  49.   (princ
  50.     "\n本程序改编于燕川布衣,有问题及时与他或她联系.\nQQ:112100528"
  51.   )
  52.   (princ)                                ;静默退出
  53. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-25 10:07 , Processed in 0.207257 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表