组合多行长度a
你好我有一个例子,我应该在一个属性块中组合多行长度和现有文本,
这里有一个例子。
我有两行,其中一行只有文本,因此如果我选择这三个元素(两行和文本),lisp必须创建一个属性块,如行下方所示
___300x200____-----------
宽度:300
深度:200
长度:(Line1长度+Line2长度)
这个属性块应该保存在一个新层中,比如我将其命名为M-Duct-Calc
该lisp的目的是测量管道长度,以创建数量估算。
我们非常感谢您的帮助或指导。 我不知道这是否是允许在这个论坛,但我准备支付这也。 没有必要为此付费,只是由于缺乏为您编写lisp的信息,没有人回复您的帖子。
您好,塔瓦特先生,感谢您回复“埃本·巴拉德:)” [报价名称=tarekt
m] “Ebn Al-Balad:)”
Waw公司
欢迎来到Cadtutor Tarek
我想最好上传一个显示lisp目标前后的示例图,我非常乐意编写
lisp(如果我能做到或可能的话)。
当做
谢谢你对塔瓦的热烈欢迎
我附上一个描述性的图纸解释我需要什么,如果有任何疑问,请让我知道。
lisp_光盘。图纸 Tarek,在附图中有一个属性块,名为:MyAttributedBlock,您可以重命名它或重新创建自己的块,但不要忘记在例程中更改块名,我希望下面的lisp能够按要求工作。
注意:您附着的图形是由另一个Autocad Arch生成的。因此,由于DXF代码,我不确定lisp是否可以在其他Cad版本上工作。
(defun c:Test(/ BlkName *error* ad IsAttributed l ss s p w d str st gent)
;;;===---{ Author : Tharwat Al Shoufi }---===;;;
;;;===---{ Date : 20. May. 2013 }---===;;;
(defun *error* (x)
(if ad
(setvar 'attdia ad)
)
(if st
(entdel st)
)
(princ "\n*Cancel*")
)
(setq BlkName "MyAttributedBlock") ; Name of the Attributed Block ;
(setq ad (getvar 'attdia))
(setvar 'attdia 0)
(or Doc
(setq Doc (vla-get-ActiveDocument (vlax-get-acad-object)))
)
(defun IsAttributed (Doc name / n)
(setq n 0)
(vlax-for o (vla-item (vla-get-blocks Doc) name)
(if (eq "AcDbAttributeDefinition" (vla-get-objectname o))
(setq n (1+ n))
)
)
n
)
(cond
((eq 4
(logand
4
(cdr
(assoc 70 (entget (tblobjname "LAYER" (getvar 'clayer))))
)
)
)
(progn (alert "Current Layer is LOCKED !!") (exit))
)
((not (tblsearch "BLOCK" BlkName))
(progn (alert (strcat "The Attributed Block name < "
BlkNmae
" > is not found in the drawing !!"
)
)
(exit)
)
)
((not (eq (IsAttributed Doc BlkName) 3))
(progn
(alert
(strcat
"The Block name <"
BlkName
" > is not Attributed or doesn't have three attributes !!"
)
)
(exit)
)
)
)
(if
(and
(progn (princ "\n Select lines to measure them :")
(setq l0.
ss (ssget '((0 . "LINE")))
)
)
(progn (princ "\n Pick one Text only :")
(setq s (ssget "_+.:S:E:L" '((0 . "*TEXT") (1 . "#*x*#"))))
)
)
(progn
((lambda (j / sn e)
(while (setq sn (ssname ss (setq j (1+ j))))
(setq e (entget sn))
(setq
l (+ l (distance (cdr (assoc 10 e)) (cdr (assoc 11 e))))
)
)
)
-1
)
(setq p (vl-string-search
"x"
(setq str (cdr (assoc 1 (entget (ssname s 0)))))
)
w (substr str 1 p)
d (substr str (+ 2 p))
)
(command "_.-insert"
BlkName
"_none"
"\\"
"1.0"
"0"
(strcat "Length :" (rtos l 2 0))
(strcat "Depth:" d)
(strcat "Width:" w)
)
(setq st (entlast))
)
)
(setvar 'attdia ad)
(princ "\n Written by Tharwat Al Shoufi")
(princ)
)
(vl-load-com)
测验图纸 Tharwat先生,这太棒了!你的头脑很聪明!!!干得好,谢谢!
很高兴认识你,希望其他人也觉得这很有帮助。
太好了,不客气,塔瑞克
谢谢你的赞美。
您好,
当我今天测试文件时,我注意到我完全忘记了圆弧,我应该能够添加直线和/或圆弧的长度,我可以通过更改此过滤器将圆弧添加到对象列表中
ss (ssget '((0 . "LINE")))
到
ss (ssget '((0 . "LINE,ARC")))
但这是最简单的部分,
我无法将弧长添加到总和中,如果我没有错的话,我认为这应该放在这里:
(progn
((lambda (j / sn e)
(while (setq sn (ssname ss (setq j (1+ j))))
(setq e (entget sn))
(setq
l (+ l (distance (cdr (assoc 10 e)) (cdr (assoc 11 e))))
)
)
)
-1
)
页:
[1]
2