cadmando2 发表于 2022-7-6 14:57:35

创建单线风管工程

我正在做一个大项目,为了减少我正在寻找的图纸,我正在创建单线管道工程和软风管。
我有一根水管。但是如何设置i来创建一条直线呢?
我试图将其设置为0,但wpipe。lsp不喜欢。我需要一个来创建软风管。
但我有很多事情要做。
我们要做的是在风管的每一侧偏移风管,并创建柱脚,这样风管的整个长度显示两个风管,一个在另一个里面,这样我就可以对其进行图案填充以显示演示。然后,我移除管道的外部管线
你知道我如何减少步骤,在正在演示的风管周围创建一个图案填充吗?
 
这是步骤的样子。



David Bethel 发表于 2022-7-6 15:06:02

一种简单的方法是将“测量”命令用于在风管管路的直线、圆弧、*柱脚上包含预先指定尺寸的X线型图案的块。
大卫

-演示。图纸

cadmando2 发表于 2022-7-6 15:10:01

这个测量命令可以写在脚本中吗?
我试过了,但我记得脚本是否允许您选择并恢复脚本?
我试过了,效果很好,但如果我能把它放在脚本或lisp例程中就太好了。
原因是要设置正确的层!
但该测量命令将在软风管上工作!我怎么才能让那个角色工作呢。
这是我正在做的一个项目。所有品红颜色的风管都将被拆除,柔性风管仍在关于拆除的争论中。

Lee Mac 发表于 2022-7-6 15:10:50

也许不是脚本,但我肯定认为LISP可以工作。

Lee Mac 发表于 2022-7-6 15:16:07

例如,使用一个非常简单的LISP,只需单击一次,即可完成David所取得的成就:
 

(defun c:duct (/ *error* Cmd cEnt)
(defun *error* (msg) (setvar "CMDECHO" Cmd) (princ))
(setq Cmd (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(if (and (setq cEnt (car (entsel "\nSelect Duct Centerline > ")))
      (tblsearch "BLOCK" "DEMO"))
   (progn
   (command "_measure" cEnt "_B" "DEMO" "_Y" "1.5"))
   (princ "\n<!> No Object Selected or Block not Found <!>"))
(setvar "CMDECHO" Cmd)
(princ))

Lee Mac 发表于 2022-7-6 15:22:48

或者,要应用于图形空间中的所有LWD多段线,请执行以下操作:
 

(defun c:duct (/ *error* Cmd ss)
(vl-load-com)
(defun *error* (msg) (setvar "CMDECHO" Cmd) (princ))
(setq Cmd (getvar "CMDECHO")) (setvar "CMDECHO" 0)
(if (and (setq ss (ssget "X" (list (cons 0 "LWPOLYLINE")
            (if (getvar "CTAB")(cons 410 (getvar "CTAB"))
            (cons 67 (- 1 (getvar "TILEMODE")))))))
          (tblsearch "BLOCK" "DEMO"))
   (progn
   (mapcar '(lambda (x) (command "_measure" x "_B" "DEMO" "_Y" "1.5"))
         (mapcar 'cadr (ssnamex ss))))
   (princ "\n<!> No Object Selected or Block not Found <!>"))
(setvar "CMDECHO" Cmd)
(princ))

风管示例。拉链

cadmando2 发表于 2022-7-6 15:26:54

谢谢李。
你似乎总是来找我。
我最终从图书馆得到了一本关于自定义“Lisp”的书
但我似乎从来没有时间在CAD 2008上阅读和玩lisp例程。如果每个人都让我一个人呆着,我可以完成我的工作,有更多的时间学习“AutoLisp”。
但是有人问我CAD或者CAD有问题。作为一名CAD经理,我是拿不到薪水的。
但我很高兴我还在工作,但我总是需要Lisp程序的例行程序,使工作更容易。
这里有一个。我得到了这个单管道Lisp例程,但它正在创建双线,我想用opption将单线管道更改为pline?这样,您创建的演示“measure”lisp就可以工作了!
我只是想减少一些干扰,我完成工作的时间不多了。。
 
使用的代码:
; 绘制任意尺寸的连续管道(或风管)
; 具有用户定义的内部折弯半径(默认值=0.0)
(定义c:bd(/d1 d p1 p2 p3 rd1 rd2 lu1 lu2 u1 u2 u3 u5 erd elu erd2
elu2 ofr)
(setq oerr*错误*)
(defun*错误*(msg)
(setvar“filletrad”ofr)
(setvar“osmode”osn)
(普林斯
功能被用户取消,或半径太大
)
(setq*错误*oerr)
(命令)
(普林斯)
)
(setq osn(getvar“osmode”))
(setq ofr(getvar“filletrad”))
(setvar“cmdecho”0)
(如果(=d2 nil)
(setq d2 1.0)
)
管道直径/管道宽度
(原理d2)
(普林斯“>?:”)
(setq d1(getdist))
(如果(=d1无)
(setq d1 d2)
)
(setq d2 d1)
(如果(=r1 nil)
(setq r1 0.0)
)
(princ“\n内弯曲半径
(普林斯r1)
(普林斯“>?:”)
(setq r(getdist))
(如果(=r nil)
(setq r r1)
)
(setq r1 r)
(setq d(/d1 2))
(setq p1(getpoint“\n起始点:”))
(setq p2(获取点p1“\n下一点:”)
(setq u1(角度p1 p2))
(setq rd1(极性p1(-u1(*pi 0.5))d));rd=右侧
(setq rd2(极坐标rd1 u1(距离p1 p2)))
(setq lu1(极性p1(+u1(*pi 0.5))d));lu=左
(setq lu2(极性lu1 u1(距离p1 p2)))
(setvar“osmode”0)
(命令行“rd1 lu1”)
(命令行“rd1 rd2”)
(setq erd(entlast))
(命令行“lu1 lu2”)
(setq elu(entlast))
(setvar“osmode”osn)
(setq p3(getpoint p2“\n Next”))
(setvar“osmode”0)
(setq u2(角度p2 p3))
(setq u5(+(-pi u1)u2))
(如果(>u5(*pi 2))
(setq u5(-u5(*pi 2)))
)
(如果(
(setq u5(+(*pi 2)u5))
)
(p3时
(setq p1 p2)
(setq p2 p3)
(setq u1(角度p1 p2))
(setq rd1(极性p1(-u1(*pi 0.5))d));rd=右/下
(setq rd2(极坐标rd1 u1(距离p1 p2)))
(setq lu1(极性p1(+u1(*pi 0.5))d));lu=左/上
(setq lu2(极性lu1 u1(距离p1 p2)))
(命令行“rd1 rd2”)
(setq erd2(entlast))
(命令行“lu1 lu2”)
(setq elu2(entlast))
(如果(
(程序
(setvar“filletrad”r)
(命令“fillet”erd erd2)
(setvar“filletrad”(+d1 r))
(命令“fillet”elu elu2)
)
)
(如果(>u5 pi)
(程序
(setvar“filletrad”(+d1 r))
(命令“fillet”erd erd2)
(setvar“filletrad”r)
(命令“fillet”elu elu2)
)
)
(setq erd erd2)
(setq elu elu2)
(setvar“osmode”osn)
(setq p3(获取点p2“\n下一步:”)
(setvar“osmode”0)
(如果(=p3 nil)
()
(setq u2(角度p2 p3))
)
(setq u5(+(-pi u1)u2))
(如果(>u5(*pi 2))
(setq u5(-u5(*pi 2)))
)
(如果(
(setq u5(+(*pi 2)u5))
)
 
)
 
(命令行“rd2 lu2”)
(setvar“osmode”osn)
(setvar“filletrad”ofr)
(普林斯)
)
 
再次感谢
简写:)

Lee Mac 发表于 2022-7-6 15:30:05

没问题,柯特,我会看看我能做什么
 
顺便问一下,有没有一个特定的层,你希望管道上?你想保留多段线的中心线吗?

Lee Mac 发表于 2022-7-6 15:35:56

也许是这样?
 
 


(defun c:bd(/ *error* vlst ovar)
(defun *error*(msg)
   (if    ovar (mapcar 'setvar vlst ovar))
   (princ (strcat "\nError: " (strcase msg)))
   (princ))
(setq    vlst '("CMDECHO" "CLAYER" "FILLETRAD")
   ovar (mapcar 'getvar vlst))
(setvar "CMDECHO" 0) (setvar "FILLETRAD" 2.0)
(if (or (tblsearch "BLOCK" "Demo")
   (and (findfile "Demo.dwg")
          (command "_.INSERT" "Demo") (command)))
   (progn
   (if (not (tblsearch "LAYER" "Duct"))
   (command "-layer" "M" "Duct" "_C" "6" "Duct" "")
   (setvar "CLAYER" "Duct"))
   (princ "\nConstruct Duct Line...")
   (command "_pline")
   (while (> (getvar "CMDACTIVE") 0) (command pause))
   (command "_fillet" "_P" (entlast))
   (command "_measure" (entlast) "_B" "Demo" "Y" "1.5"))
   (princ "\n<!> Block Not Found <!>"))
(mapcar 'setvar vlst ovar)
(princ))

David Bethel 发表于 2022-7-6 15:37:02

测量不需要点输入吗?ename无法通过A2K工作。也许命令已经改变了-大卫
页: [1] 2
查看完整版本: 创建单线风管工程