titoprax 发表于 2022-7-6 17:03:57

动态块。请帮忙。

你好
我是西班牙人,首先请原谅我的英语不好。
在消防公司工作。
我们使用的软件是autocad 2009。
对于消防管道的设计和创建,我们创建了一个动态块,我们与该块一起帮助改进工作。。。但我们发现了一个问题,当涉及到计算这些区块。
EATTEXT命令非常实用,因为我们确定了块的总数,但等于并不能帮助我们修改属性。qselect选项出现问题,无法使用该选项选择具有相同属性的块。。。
我的问题是:
您可以修改命令EATTEXT,以便在计算完所有块的数量后,可以从创建命令EATTEXT的表中更改其属性?
 
我举个例子:
想象一下,一座有1000个门的建筑。所有这些门都是具有属性的动态块。
我想知道有多少门距离相同,因为它们大小相同,等等。
借助EATTEXT,表格为我们提供了所有这些信息,但不允许我们从该表格中进行更改。
要做到这一点,我们必须去命令阿托和阿廷。
难道你不能用一些列表来改进命令EATTEXT吗?
有没有更好的方法来实现这一步?
 
感谢并原谅我的英语不好。

ASMI 发表于 2022-7-6 17:11:01

街区在哪里?是否具有可见性参数?

titoprax 发表于 2022-7-6 17:14:22

好的,这里我包括动态块,用于检查。
动态块有一个长度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)。图纸

ASMI 发表于 2022-7-6 17:19:09

是的,这是可能的,但我需要一些时间。我可能明天找这个时间。

titoprax 发表于 2022-7-6 17:24:17

哦,非常感谢。
如果它成功了,那将是一项巨大的节约工作。

ASMI 发表于 2022-7-6 17:26:53

似乎有效(排序距离并在文本屏幕中打印报告):
 
(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
------------------------------------------
 
 
可见性状态不是代码无法工作的原因。

titoprax 发表于 2022-7-6 17:30:55

早上好(来自西班牙)
阿斯米,你有填写属性的选项吗?
 
我有一个疑问,如果需要的话,我一直在修改列表以增加长度。
Ie;
1.AC、CB
2.AC、CD、DB。
3.AC、CD、DE、EB。
4.
5. …
 
这就是我所改变的。。。
 
 

titoprax 发表于 2022-7-6 17:37:38

问候语。
 
很遗憾,我不懂西班牙语,我想问一下属性。您有两个属性“Distancia Tuberia”和“Tuberia”,请指定您希望看到的信息和格式。

ASMI 发表于 2022-7-6 17:40:53

“距离管”表示总长度。示例:1000mm、3450mm。。。
“管道”是要分类的。
示例:1A、2B、1C、4D。。。
排名是执行现场的管道。
当工人必须安装这些管道时,知道哪个是第二级安装。
实例管道类型“1A”-管道距离:1900mm,数量:90个单位
 
动态块有2个功能。
1用于制造管道的管道分为AB、AC、CB。AB、AC、CD、DB。。。
第二安装管道:
管道“A”由AB、AC、CB组成。为5000mm,有“67”个单元
 
我的英语不好,我希望我已经澄清了。
 
我的想法是使用列表或表格修改属性。以及通过属性快速选择动态块的可能性。

titoprax 发表于 2022-7-6 17:43:16

总的来说很清楚,但对我来说,这是一个很大的工作。我稍后再谈。我应该说这比我想象的要难一点。你可以用距离CD、DE、EB等显示块和一些真实的图形(如果不想在论坛上发布,请查看我的网站上的电子邮件)。
 
对我来说,英语也不是母语。
页: [1] 2
查看完整版本: 动态块。请帮忙。