明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1971|回复: 9

新手 第一次写

  [复制链接]
发表于 2012-6-2 18:05 | 显示全部楼层 |阅读模式
本帖最后由 ejingsong 于 2012-6-3 19:42 编辑

作为一个新手     第一次写    终于发了一个对于我自己来说的“技术贴”
以前都是回复大侠们的帖子  发的最多好像就是 “支持xxxxx”      呵呵   鼓捣一晚上弄个大杂烩   很多都是坛子的源码  给自己留点念想  “处女作”啊
自己瞎写着玩的    主要想法就是    画几个图形    然后把这几个图形顺便做成块    还很菜   高手们有空看的话指教指教  
(defun C:tt()
; 获取在图元 en 之后产生的图元的选择集;
    (defun last_ent (en / ss)
    (if en
     (progn
       (setq ss (ssadd))
       (while (setq en (entnext en))
         (if (not (member (cdr (assoc 0 (entget en)))
                          '("ATTRIB" "VERTEX" "SEQEND")
                  )
             )
           (ssadd en ss)
         );if
       );while
       (if (zerop (sslength ss)) (setq ss nil))
       ss
     );progn
     (ssget "_x")
   );if
)
(setq zz (getpoint "\n 请输入第一桩芯点:"))
(setq rr (getreal "\n 请输入桩径<200>:"))
(if (null rr) (setq rr 200))
    (setq pt1 (polar zz pi (+ (* rr 0.5) rr)))
    (setq pt2 (polar zz 0 (+ (* rr 0.5) rr)))
    (setq pt3 (polar zz (* 0.5 pi) (+ (* rr 0.5) rr)))
    (setq pt4 (polar zz (* 1.5 pi) (+ (* rr 0.5) rr)))
     (if (not (tblsearch "LAYER" "Cen"))
     (command "layer" "m" "Cen" "c" 2 "" "l" "center2" "" "lw"
        0.18 "" "")
    )
    (command "layer" "s" "cen" "")
    (entmake (list '(0 . "POINT") (cons 10 zz)))
    (setq ss-end (entlast))
    (entmake (list '(0 . "CIRCLE") (cons 10 zz) (cons 40 rr)))
    (entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)))
    (entmake (list '(0 . "LINE") (cons 10 pt3) (cons 11 pt4)))
    (setq ss-end (last_ent ss-end))
  ;;造快表开始标志实体.
  (and
  (entmake (list'(0 . "BLOCK")'(2 . "*U")'(70 . 1)(cons 10 zz)))  
  (setq i 0)
  (repeat (sslength ss-end)
    (setq ent (ssname ss-end i))
   (setq ENDBLK (entmake (entget ent)))
    (entdel ent)
    (setq i (1+ i))
  )
  ) ;;造块表结束标志实体.
  (setq blk (entmake '((0 . "ENDBLK"))));;返回以上块定义.
  (if blk  ;如果造块成功.插入一个实例.
    (entmake (list (cons 0 "INSERT")  ;生成块实体(和块定义是不同的).
     (cons 2 blk)       ;组码2引用块定义.
     (cons 10 zz)       ;块插入点,按定义点.
      )
    )
  )
  (princ)
)
   
   
   




该贴已经同步到 ejingsong的微博

评分

参与人数 1明经币 +1 金钱 +15 收起 理由
ZZXXQQ + 1 + 15 赞一个!

查看全部评分

 楼主| 发表于 2012-6-2 18:13 | 显示全部楼层
command   和entmake混乱用了   图层用entmake怎么建立  没整明白    呵呵   
发表于 2012-6-3 11:06 | 显示全部楼层
鼓励一下。
发表于 2012-6-3 15:26 | 显示全部楼层
来个伪源码的
  1. (defun c:tt ()
  2.   (if (= (tblsearch "block" "ZZ00") nil)
  3.     (progn
  4.       (setq s0 (entlast))
  5.       (xyp-MkLaCo "TEST2" 2)
  6.       (xyp-circle '(0 0) 0.5)
  7.       (xyp-MkLaColt "Cen" 1 "center2")
  8.       (xyp-line '(-0.6 0) '(0.6 0))
  9.       (xyp-line '(0 -0.6) '(0 0.6))
  10.       (command "block" "ZZ00" '(0 0) (xyp-SSelEntnext s0) "")
  11.     )
  12.   )
  13.   (setq rr (Udist 7 "" "桩径<输入或鼠标直接量取>" rr nil))
  14.   (while (setq p0 (getpoint "\n第一桩芯点: "))
  15.     (command "insert" "ZZ00" p0 rr rr 0)
  16.   )
  17.   (princ)
  18. )
发表于 2012-6-3 18:49 | 显示全部楼层
我也是菜鸟,支持楼主,希望我有一天也能真正自己也一个程序
发表于 2012-6-3 19:00 | 显示全部楼层
没看懂,我再研究研究
发表于 2013-6-6 09:12 | 显示全部楼层
xyp1964 发表于 2012-6-3 15:26
来个伪源码的

运行出现错误
发表于 2013-6-6 09:18 | 显示全部楼层
参考一下学习制作块,一般桩基绘制的数量较多,建议楼主 增加连续绘制桩基。
发表于 2013-10-17 17:48 | 显示全部楼层
经过修改,可以连续绘制
  1. (defun C:zhuangji()
  2. ; 获取在图元 en 之后产生的图元的选择集;
  3.     (defun last_ent (en / ss)
  4.     (if en
  5.      (progn
  6.        (setq ss (ssadd))
  7.        (while (setq en (entnext en))
  8.          (if (not (member (cdr (assoc 0 (entget en)))
  9.                           '("ATTRIB" "VERTEX" "SEQEND")
  10.                   )
  11.              )
  12.            (ssadd en ss)
  13.          );if
  14.        );while
  15.        (if (zerop (sslength ss)) (setq ss nil))
  16.        ss
  17.      );progn
  18.      (ssget "_x")
  19.    );if
  20. )
  21. (setq rr (getreal "\n 请输入桩基半径<0.5m>:"))

  22. (setq zz (getpoint "\n 请指定桩中心:"))
  23. (while zz

  24. (if (null rr) (setq rr 0.5))
  25.     (setq pt1 (polar zz pi (+ (* rr 0.5) rr)))
  26.     (setq pt2 (polar zz 0 (+ (* rr 0.5) rr)))
  27.     (setq pt3 (polar zz (* 0.5 pi) (+ (* rr 0.5) rr)))
  28.     (setq pt4 (polar zz (* 1.5 pi) (+ (* rr 0.5) rr)))
  29.      (if (not (tblsearch "LAYER" "Cen"))
  30.      (command "layer" "m" "Cen" "c" 2 "" "l" "center2" "" "lw"
  31.         0.18 "" "")
  32.     )
  33.     (command "layer" "s" "cen" "")
  34.    ; (entmake (list '(0 . "POINT") (cons 10 zz)));去分号制作中心点,
  35.     (setq ss-end (entlast))
  36.     (entmake (list '(0 . "CIRCLE") (cons 10 zz) (cons 40 rr)))
  37.     (entmake (list '(0 . "LINE") (cons 10 pt1) (cons 11 pt2)))
  38.     (entmake (list '(0 . "LINE") (cons 10 pt3) (cons 11 pt4)))
  39.     (setq ss-end (last_ent ss-end))
  40.   ;;造快表开始标志实体.
  41.   (and
  42.   (entmake (list'(0 . "BLOCK")'(2 . "*U")'(70 . 1)(cons 10 zz)))  
  43.   (setq i 0)
  44.   (repeat (sslength ss-end)
  45.     (setq ent (ssname ss-end i))
  46.    (setq ENDBLK (entmake (entget ent)))
  47.     (entdel ent)
  48.     (setq i (1+ i))
  49.   )
  50.   ) ;;造块表结束标志实体.
  51.   (setq blk (entmake '((0 . "ENDBLK"))));;返回以上块定义.
  52.   (if blk  ;如果造块成功.插入一个实例.
  53.     (entmake (list (cons 0 "INSERT")  ;生成块实体(和块定义是不同的).
  54.      (cons 2 blk)       ;组码2引用块定义.
  55.      (cons 10 zz)       ;块插入点,按定义点.
  56.       )
  57.     )
  58.   )
  59. (setq zz (getpoint "\n 请指定桩中心:"))
  60. )
  61.   (princ)
  62. )
  63. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  64. (defun c:tt()
  65.   (if (= (tblsearch "block" "ZZ00") nil)
  66.     (progn
  67.       (setq s0 (entlast))
  68.       (xyp-MkLaCo "TEST2" 2)
  69.       (xyp-circle '(0 0) 0.5)
  70.       (xyp-MkLaColt "Cen" 1 "center2")
  71.       (xyp-line '(-0.6 0) '(0.6 0))
  72.       (xyp-line '(0 -0.6) '(0 0.6))
  73.       (command "block" "ZZ00" '(0 0) (xyp-SSelEntnext s0) "")
  74.     )
  75.   )
  76.   (setq rr (Udist 7 "" "桩径<输入或鼠标直接量取>" rr nil))
  77.   (while (setq p0 (getpoint "\n第一桩芯点: "))
  78.     (command "insert" "ZZ00" p0 rr rr 0)
  79.   )
  80.   (princ)
  81. )
发表于 2013-10-17 18:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 16:02 , Processed in 0.212561 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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