明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3555|回复: 15

春婵建筑模型CAD绘图工具箱

[复制链接]
发表于 2018-4-5 15:17 | 显示全部楼层 |阅读模式
AutoCAD插件
插件名称: 春婵建筑模型CAD绘图工具箱
插件版本: v4.0
插件类型: 辅助类工具
授权方式: 免费版本
适用版本: 2004 2005 2006 2007 2008 2009 2010 2011 2012 
开发者: 钮广春
推荐等级: ★★★★★
插件图片:
内容简介: 建筑模型绘图插件,本人从事建筑模型绘图工作10多年,在工作中,经常用到AutoCAD软件,在大量的工作中,我总结出一套快速绘图的工具,纯lisp编写的,适用于多版本的CAD软件,测试CAD2007和CAD2014,测试没有问题,所有快捷命令,全部自己定,再也不用记别人的命令的,所有启动命令自己设置。
里面有前辈的“小菜选择集”,设置命令的方法是猫老师教的,还有好多的前辈的指导,感谢!!!
建筑模型绘图插件,本人从事建筑模型绘图工作10多年,在工作中,经常用到AutoCAD软件,在大量的工作中,我总结出一套快速绘图的工具,纯lisp编写的,适用于多版本的CAD软件,测试CAD2007和CAD2014,测试没有问题,所有快捷命令,全部自己定,再也不用记别人的命令的,所有启动命令自己设置。
工作当中,图层的使用是最多的,程序代码有单独的图层命令,里面有大量的功能,自动建立图层,锁定图层,打开图层,独显选择图层等等,图层工具的启动命令也可以自己定,工具所有命令都是自己设置,方便实用。
其中的户型命令,是我觉得是最实际的命令,一个户型画图费用80块,用了命令相当于所有内墙都是自动绘制,自动排版,只需鼠标点击就可以完成,几秒钟所有内墙全部出来,省去大量绘图时间,也加快了自己的赚钱速度,特别是绘制大型综合体的建筑,例如:大型商场的室内模型,室内的内墙,要是一个的一个的画门洞,是不是要好久,用了这个命令,秒速出料,已经自动排好版,按照你的选择顺序,框选就是按照绘图顺序,自己体验吧,还有可以自动画门框,根据选择的门洞,自动绘制门框,再用不用一个个的去调整宽度了。
自动绘制窗线也是非常实用的工具,用过的都知道,快捷出窗线,窗线排版前期的增加外框,有专门的外框绘制命令,考虑了有凸窗的情况,底部收料位,四周收料位,等等各种情况,还有外框自动排版命令,统称窗线绘制三部曲。
百叶窗的绘制程序就更有说头了,百叶窗绘图简单,做雕刻文件就容易产生大肚子,用这个代码出来的百叶窗,在做雕刻文件时就可以很好的避免这个头疼的问题,百叶的径的宽度,除了常规的几个宽度,还可以自己设置宽度,直接明了。
单击矩形边界拉伸,这个功能一说就明白了,在绘制超高型建筑的时候,有的时候用 s 拉伸就很不方便,料太高了,框不住,不是框多了,就是框少了,通过眼睛看很吃力,有这个命令就很方便了,直接点击单边的矩形边就可以直接拉伸。
在绘图当中,有的时候图纸的线条的 z 轴点高度不一样,直接导致测量的尺寸不准,画出的墙面就大了,或者小了,“z 轴归零” 这个命令就很好用了,直接把所有线都投影到z 轴为零的平面上,相当于二维平面,这样绘图就不卡,测量的值也是准确的。
画建筑的模型的图纸,我们会用到各种颜色的图层,好的绘图分层习惯对以后的排版做雕刻文件至关重要,前期认真后期就很方便操作,我当时的想法就是在绘图时能不能根据自己的想法去自动变换图层,不用手动去选择,下面这个命令就出生了,自动变换图层命令,例如:我画一条线,功能是刻线,在画线之前,图层自动改变为2#黄色图层,画出的线就是黄色线,图层2#,矩形刻透,rec 之前图层自动变成1#红色图层,画出的矩形自动为1#红色图层(也可以定制自己颜色图层),我相信这个功能更适合大家,相当于无意识的完成了绘图前的分配图层工作。
相信有好多的抄单绘图人员,给公司和个人绘图时,标号是不可少的步骤,对方直接按照号码拼接楼体就可以,软件自动底板标号,墙面标号,自动画体块,合理配合使用,功能组合应用更广泛,
删除重线功能,最大的功能就是减少雕刻时间,景观绘图用的比较多,景观绘图填充曲线小路时可以用曲线填充的命令,很方便。
最后说一个在雕刻排版时用到的命令,雕刻分离和雕刻合并,相信看到这两个命令就知道他的功能,都排版用到的命令,节约绘图时间。
春婵建筑模型CAD绘图工具箱,免安装,直接拖到CAD窗口,就可以使用
下载地址:





本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +3 金钱 +30 收起 理由
xyp1964 + 3 + 30 很给力!

查看全部评分

 楼主| 发表于 2018-4-5 16:22 | 显示全部楼层
写万家灯火代码的时候,写了一个判断线方向的代码,觉得很有意思,我发出来源码,请厉害的前辈看看是否能简化,

实现的功能就是图上的显示的
  1. (defun ssinters  (sss / i num obj1 obj2 j interpts ptlist)
  2.   (setq  i   0
  3.   num (sslength sss)
  4.   )
  5.   (while (< i (1- num))
  6.     (setq obj1 (ssname sss i)
  7.     obj1 (vlax-ename->vla-object obj1)
  8.     j    (1+ i)
  9.     )
  10.     (while (< j num)
  11.       (setq obj2     (ssname sss j)
  12.       obj2     (vlax-ename->vla-object obj2)
  13.       interpts (vla-intersectwith
  14.            obj1
  15.            obj2
  16.            0
  17.          )
  18.       interpts (vlax-variant-value interpts)
  19.       )
  20.       (if (> (vlax-safearray-get-u-bound interpts 1) 0)
  21.   (progn
  22.     (setq  interpts
  23.      (vlax-safearray->list interpts)
  24.     )
  25.     (while (> (length interpts) 0)
  26.       (setq ptlist (cons (list (car interpts)
  27.              (cadr interpts)
  28.              (caddr interpts)
  29.              )
  30.              ptlist
  31.        )
  32.       )
  33.       (setq interpts (cdddr interpts))
  34.     )
  35.   )
  36.       )
  37.       (setq j (1+ j))
  38.     )
  39.     (setq i (1+ i))
  40.   )
  41.   ptlist
  42. )


  43. (defun HH:ssPts:Sort (ssPts KEY FUZZ / E EN FUN LST N);By 自贡黄明儒
  44.   ;;1 点列表排序
  45.   (defun sortpts (PTS FUN xyz FUZZ)
  46.     (vl-sort pts
  47.       '(lambda (a b)
  48.   (if (not (equal (xyz a) (xyz b) fuzz))
  49.     (fun (xyz a) (xyz b))
  50.   )
  51.        )
  52.     )
  53.   )
  54.   ;;2 排序先后
  55.   (defun sortpts1 (PTS KEY FUZZ)
  56.     (setq Key (vl-string->list Key))
  57.     (foreach xyz (reverse Key)
  58.       (cond ((< xyz 100)
  59.       (setq fun >)
  60.       (setq xyz (nth (- xyz 88) (list car cadr caddr)))
  61.      )
  62.      (T
  63.       (setq fun <)
  64.       (setq xyz (nth (- xyz 120) (list car cadr caddr)))
  65.      )
  66.       )
  67.       (setq Pts (sortpts Pts fun xyz fuzz))
  68.     )
  69.   )
  70.   ;;3 本程序主程序
  71.   (cond
  72.     ((= (type ssPts) 'PICKSET)
  73.      (repeat (setq n (sslength ssPts))
  74.        (if (and (setq e (ssname ssPts (setq n (1- n))))
  75.   (setq en (entget e))
  76.     )
  77.   (setq lst (cons (append (cdr (assoc 10 en)) (list e)) lst))
  78.        )
  79.      )
  80.      (mapcar 'last (sortpts1 lst KEY FUZZ))
  81.     )
  82.     ((Listp ssPts)
  83.       (cond
  84. ((vl-consp (car ssPts)) (sortpts1 ssPts KEY FUZZ))
  85. ((= (type (car ssPts)) 'ENAME)
  86.   (foreach e ssPts
  87.     (if (setq en (entget e))
  88.       (setq lst (cons (append (cdr (assoc 10 en)) (list e)) lst))
  89.     )
  90.   )
  91.   (mapcar 'last (sortpts1 lst KEY FUZZ))
  92. )
  93. (T
  94.   (cond ((equal key "X") (vl-sort ssPts '>))
  95.         ((equal key "x") (vl-sort ssPts '<))
  96.   )
  97. )
  98.       )
  99.     )
  100.   )
  101. )

  102. ;; Clockwise-p  -  Lee Mac
  103. ;; Returns T if p1,p2,p3 are clockwise oriented

  104. (defun LM:Clockwise-p ( p1 p2 p3 )
  105.     ((lambda ( n ) (< (car (trans p2 0 n)) (car (trans p1 0 n)))) (mapcar '- p1 p3))
  106. )

  107. ;;164.3 [功能] 多段线端点列表 By 自贡黄明儒
  108. ;;示例(HH:PtLists (car (entsel)))
  109. (defun HH:PtLists (en)
  110.   (mapcar 'cdr
  111.           (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget en))
  112.   )
  113. )


  114. ;(/ osmode_bak clayer_bak ss ss7 ss2 en pts n);猫老师编辑器变量自动生成
  115. (defun c:tt (/ osmode_bak clayer_bak ss ss7 ss2   p1 pts p2 p3 en n ss1  sss ptx lst pt)
  116. ;----开始系统变量备份----
  117. (command "undo" "be")
  118. (setvar "cmdecho" 0);_关闭命令提示
  119. (setq osmode_bak (getvar "osmode"));_记录捕捉
  120. (setvar "osmode" 0);_关闭捕捉
  121. (setq clayer_bak (getvar "clayer"));_记录当前图层
  122. ;----;----;----;----;----;----;----;----;----
  123. ;按照图层分选择集,为了求2个图层对象的交点
  124. (setq ss (ssget))

  125.   (command "select" ss  "")
  126.   (setq ss7 (ssget "p" '((8 . "ngc7"))))

  127.   (command "select" ss "")
  128.   (setq ss2 (ssget "p" '((8 . "ngc2"))))


  129. (setq en (ssname ss7 0))
  130. (setq pts (HH:PtLists en));HH:PtLists多段线端点列表 By 自贡黄明儒
  131. (setq n 0)

  132. (if (< (fix(vlax-curve-getEndParam en)) 2)
  133.     (progn
  134.     (dengg);一条线的时候
  135.   )
  136. )
  137. (if (> (fix(vlax-curve-getEndParam en)) 1)
  138.     (progn
  139.     (deng);多条线的时候
  140.   )
  141.   )


  142. ;----结束系统变量还原----
  143. (setvar "osmode" osmode_bak);_还原捕捉
  144. (setvar "clayer" clayer_bak);_还原图层
  145. (setvar "cmdecho" 1);_打开命令提示
  146. (command "undo" "e")
  147. (princ);_关闭程序返回值
  148.   )



  149. ;(/ p1 pts p2 p3 en n ss1 ss2 sss ptx lst pt)
  150. (defun deng ()
  151. (setq p1 (nth 0 pts)
  152.       p2 (nth 1 pts)
  153.       p3 (nth 2 pts)
  154. )
  155. (if (= (LM:Clockwise-p p1 p2 p3) nil); 判断顺时针和逆时针Clockwise-p  -  Lee Mac
  156.     (progn (setq pts(reverse pts)))
  157. )
  158. ;重复动作
  159. (repeat
  160.    (fix(vlax-curve-getEndParam en))
  161. (command "line" (nth n pts) (nth (1+ n) pts) "")
  162. (setq ss1 (entlast))
  163. (command "select" ss1 ss2 "")
  164. (setq sss (ssget "p" ))
  165. (setq ptx (ssinters sss));ssinters求交点,明经论坛里面的
  166. (command "erase" ss1 "")

  167. (setq lst (append (list  (nth n pts) (nth (1+ n) pts))  ptx))
  168. ;下面就是判断线的方向,根据方向,重新排序点
  169. (if (and(= (car(nth n pts)) (car(nth (1+ n) pts)))
  170.         (< (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  171.      )
  172.    (progn(setq lst (HH:ssPts:Sort lst "y" 0.1)));点排序 HH:ssPts:Sort  By 自贡黄明儒
  173. )
  174. (if (and(= (car(nth n pts)) (car(nth (1+ n) pts)))
  175.         (> (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  176.      )
  177.    (progn(setq lst (HH:ssPts:Sort lst "Y" 0.1)))
  178. )
  179. (if (and(= (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  180.         (< (car(nth n pts)) (car(nth (1+ n) pts)))
  181.      )
  182.    (progn(setq lst (HH:ssPts:Sort lst "x" 0.1)))
  183. )
  184. (if (and(= (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  185.         (> (car(nth n pts)) (car(nth (1+ n) pts)))
  186.      )
  187.    (progn(setq lst (HH:ssPts:Sort lst "X" 0.1)))
  188. )
  189. (if (and(< (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  190.         (< (car(nth n pts)) (car(nth (1+ n) pts)))
  191.      )
  192.    (progn(setq lst (HH:ssPts:Sort lst "xy" 0.1)))
  193. )
  194. (if (and(> (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  195.         (> (car(nth n pts)) (car(nth (1+ n) pts)))
  196.      )
  197.    (progn(setq lst (HH:ssPts:Sort lst "XY" 0.1)))
  198. )
  199. (if (and(> (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  200.         (< (car(nth n pts)) (car(nth (1+ n) pts)))
  201.      )
  202.    (progn(setq lst (HH:ssPts:Sort lst "Yx" 0.1)))
  203. )
  204. (if (and(< (cadr(nth n pts)) (cadr(nth (1+ n) pts)))
  205.         (> (car(nth n pts)) (car(nth (1+ n) pts)))
  206.      )
  207.    (progn(setq lst (HH:ssPts:Sort lst "Xy" 0.1)))
  208. )

  209. (command "-layer" "s" "ngc1" "")

  210. (entmake (append    (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 (length lst)))
  211.       (mapcar '(lambda (pt)(cons 10 pt)) lst ))
  212.   )
  213.   (setq n (1+ n))
  214. )
  215. )

上面的源码和附件源码是一样的,不愿意复制的可以下载,收币一枚
上面的代码是我自己琢磨的,有点啰嗦,只能说实现功能,期望大师能给个简单的办法,抛转一块,

本帖子中包含更多资源

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

x
发表于 2024-1-15 01:14 | 显示全部楼层
本帖最后由 zilong136 于 2024-1-15 01:31 编辑
hhh454 发表于 2024-1-15 00:38
输入时间为:1982

OK,谢谢。

02春婵自动画体块墙面已扣好料位【tk】
03春婵模型-自动画万家灯火【d3】
春婵工具-画卡条加宽02【d4】
春婵工具-画卡条加宽04【d4】
申请码为: -1966280254
求注册码:

 楼主| 发表于 2018-4-5 16:28 | 显示全部楼层
hhh454 发表于 2018-4-5 16:22
写万家灯火代码的时候,写了一个判断线方向的代码,觉得很有意思,我发出来源码,请厉害的前辈看看是否能简 ...

需要创建图层:ngc1   ngc2    ngc7
发表于 2018-4-10 11:43 | 显示全部楼层
支持你无私奉献
发表于 2018-4-13 14:06 | 显示全部楼层
感谢分享   楼主把群号发下  加个群  谢谢
发表于 2020-11-15 10:10 | 显示全部楼层
这个工具很强
发表于 2020-11-25 21:03 | 显示全部楼层
好想你 放出源码
发表于 2023-6-10 12:40 来自手机 | 显示全部楼层
好东西要分享
发表于 2023-6-30 14:21 | 显示全部楼层

好东西要分享
发表于 2023-9-28 15:47 | 显示全部楼层
好东西要分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 13:35 , Processed in 0.204097 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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