动态块。请帮忙。
你好我是西班牙人,首先请原谅我的英语不好。
在消防公司工作。
我们使用的软件是autocad 2009。
对于消防管道的设计和创建,我们创建了一个动态块,我们与该块一起帮助改进工作。。。但我们发现了一个问题,当涉及到计算这些区块。
EATTEXT命令非常实用,因为我们确定了块的总数,但等于并不能帮助我们修改属性。qselect选项出现问题,无法使用该选项选择具有相同属性的块。。。
我的问题是:
您可以修改命令EATTEXT,以便在计算完所有块的数量后,可以从创建命令EATTEXT的表中更改其属性?
我举个例子:
想象一下,一座有1000个门的建筑。所有这些门都是具有属性的动态块。
我想知道有多少门距离相同,因为它们大小相同,等等。
借助EATTEXT,表格为我们提供了所有这些信息,但不允许我们从该表格中进行更改。
要做到这一点,我们必须去命令阿托和阿廷。
难道你不能用一些列表来改进命令EATTEXT吗?
有没有更好的方法来实现这一步?
感谢并原谅我的英语不好。 街区在哪里?是否具有可见性参数? 好的,这里我包括动态块,用于检查。
动态块有一个长度AB和另外两个较小的长度AC和CB。但是三角形内部的一个属性(名称),这个属性是用来区分一种和另一种。
以下文件是一个示例。
本例中的想法如下:
我们有几个动态块,它们都有不同的长度,它们都是相同的动态块。
有些是等长AB。但经度A-C-C和B是不同的。
这个想法是:
知道编号。具有距离AB、AC和CB的完全相同的动态块。
一旦我们知道精确的第N次方,在属性中分配一个数字。
例子:
Dist.AB:8 AC:3 CB:5 Number:15 Name(1)
Dist.AB:15 AC:10 BC:5 Number:5 Name(2)
一旦定稿。将阻止属性定义的动态:1.2、30、50等。
动态块II。图纸
动态块(Ensayos)。图纸 是的,这是可能的,但我需要一些时间。我可能明天找这个时间。 哦,非常感谢。
如果它成功了,那将是一项巨大的节约工作。 似乎有效(排序距离并在文本屏幕中打印报告):
(defun c:dycnt(/ dySet prLst rpLst lLen)
(vl-load-com)
(defun #Asmi_Extract_Dynamic_Blocks(SelSet NameList / bCnt eCnt cBl eBl oSet)
(if(and SelSet NameList)
(progn
(setq bCnt 0
NameList(mapcar 'strcase NameList)
eCnt(sslength SelSet)
oSet(ssadd)
); end setq
(repeat eCnt
(setq cBl(vlax-ename->vla-object
(setq eBl(ssname SelSet bCnt))))
(if
(and
(= "AcDbBlockReference"(vla-get-ObjectName cBl))
(vlax-property-available-p cBl 'EffectiveName)
(member(strcase(vla-get-EffectiveName cBl))NameList)
); end and
(ssadd eBl oSet)
); end if
(setq bCnt(1+ bCnt))
); end repeat
);end progn
); end if
oSet
); end of #Asmi_Extract_Dynamic_Blocks
(defun #Asmi_Get_Dynamic_Property(Block Property / oVal)
(if(= 'ENAME(type Block))
(setq Block(vlax-ename->vla-object Block))
); end if
(if(= :vlax-true(vla-get-IsDynamicBlock Block))
(foreach p(vlax-safearray->list
(vlax-variant-value
(vla-GetDynamicBlockProperties Block)))
(if(=(strcase Property)(strcase(vla-get-PropertyName p)))
(if(vl-catch-all-error-p
(setq oVal(vl-catch-all-apply
'vla-get-Value(list p))))
nil
(setq oVal(vlax-variant-value oVal))
); end if
); end if
); end foreach
); end if
oVal
); end of #Asmi_Get_Dynamic_Property
(defun #Asmi_Set_to_List(Sel_Set VLA / Out)
(setq Out
(vl-remove-if 'listp
(mapcar 'cadr(ssnamex Sel_Set))))
(if VLA
(mapcar 'vlax-ename->vla-object Out)
Out
); end if
); end of #Asmi_Set_to_List
(if
(and
(setq dySet(ssget "_X" '((0 . "INSERT"))))
(setq dySet
(#Asmi_Extract_Dynamic_Blocks dySet
'("Despiece (Prueba 03)")))
); end if
(progn
(foreach bl(#Asmi_Set_to_List dySet T)
(setq prLst(cons
(list
(#Asmi_Get_Dynamic_Property bl "Dist (A-B)")
(#Asmi_Get_Dynamic_Property bl "Dist (C-B)")
(#Asmi_Get_Dynamic_Property bl "Dist (A-C)")
); end list
prLst
); end cons
); end setq
); end foreach
(setq lLen(length prLst))
(while prLst
(setq rpLst(cons(append(car prLst)
(list(- lLen(setq lLen(length (setq prLst
(vl-remove(car prLst)prLst)))))))rpLst)
); end setq
); end while
(setq rpLst(vl-sort rpLst
'(lambda(a b)(<(car a)(car b)))))
(princ "\n\n A-B C-B A-C Count")
(princ "\n ------------------------------------------")
(foreach str rpLst
(princ(strcat "\n "(rtos(car str)) " "))
(repeat(- 10(strlen(rtos(car str))))(princ " "))
(princ(strcat " "(rtos(cadr str)) " "))
(repeat(- 10(strlen(rtos(cadr str))))(princ " "))
(princ(strcat " "(rtos(nth 2 str))" "))
(repeat(- 10(strlen(rtos(nth 2 str))))(princ " "))
(princ(strcat " "(itoa(last str))))
); end foreach
(princ "\n ------------------------------------------")
(textscr)
); end progn
); end if
(princ)
); end of c:dycnt
内部代码并添加新的块名,例如:
Command: dycnt
A-B C-B A-C Count
------------------------------------------
4 1 3 1
10 4 6 2
10 5.5 4.5 1
14 8 6 2
14 9.5 4.5 10
20 14 6 1
20 15.5 4.5 14
26 20 6 1
26 21.5 4.5 2
------------------------------------------
可见性状态不是代码无法工作的原因。 早上好(来自西班牙)
阿斯米,你有填写属性的选项吗?
我有一个疑问,如果需要的话,我一直在修改列表以增加长度。
Ie;
1.AC、CB
2.AC、CD、DB。
3.AC、CD、DE、EB。
4.
5. …
这就是我所改变的。。。
问候语。
很遗憾,我不懂西班牙语,我想问一下属性。您有两个属性“Distancia Tuberia”和“Tuberia”,请指定您希望看到的信息和格式。 “距离管”表示总长度。示例:1000mm、3450mm。。。
“管道”是要分类的。
示例:1A、2B、1C、4D。。。
排名是执行现场的管道。
当工人必须安装这些管道时,知道哪个是第二级安装。
实例管道类型“1A”-管道距离:1900mm,数量:90个单位
动态块有2个功能。
1用于制造管道的管道分为AB、AC、CB。AB、AC、CD、DB。。。
第二安装管道:
管道“A”由AB、AC、CB组成。为5000mm,有“67”个单元
我的英语不好,我希望我已经澄清了。
我的想法是使用列表或表格修改属性。以及通过属性快速选择动态块的可能性。 总的来说很清楚,但对我来说,这是一个很大的工作。我稍后再谈。我应该说这比我想象的要难一点。你可以用距离CD、DE、EB等显示块和一些真实的图形(如果不想在论坛上发布,请查看我的网站上的电子邮件)。
对我来说,英语也不是母语。
页:
[1]
2