乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 14

[编程交流] 动态块。请帮忙。

[复制链接]

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 17:11:01 | 显示全部楼层
街区在哪里?是否具有可见性参数?
回复

使用道具 举报

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 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)。图纸
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 17:19:09 | 显示全部楼层
是的,这是可能的,但我需要一些时间。我可能明天找这个时间。
回复

使用道具 举报

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 17:24:17 | 显示全部楼层
哦,非常感谢。
如果它成功了,那将是一项巨大的节约工作。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 2022-7-6 17:26:53 | 显示全部楼层
似乎有效(排序距离并在文本屏幕中打印报告):
 
  1. (defun c:dycnt(/ dySet prLst rpLst lLen)
  2. (vl-load-com)
  3. (defun #Asmi_Extract_Dynamic_Blocks(SelSet NameList / bCnt eCnt cBl eBl oSet)
  4. (if(and SelSet NameList)
  5.    (progn
  6.      (setq bCnt 0
  7.     NameList(mapcar 'strcase NameList)
  8.     eCnt(sslength SelSet)
  9.     oSet(ssadd)
  10.     ); end setq
  11.      (repeat eCnt
  12. (setq cBl(vlax-ename->vla-object
  13.            (setq eBl(ssname SelSet bCnt))))
  14. (if
  15.   (and
  16.    (= "AcDbBlockReference"(vla-get-ObjectName cBl))
  17.    (vlax-property-available-p cBl 'EffectiveName)
  18.    (member(strcase(vla-get-EffectiveName cBl))NameList)
  19.    ); end and
  20.   (ssadd eBl oSet)
  21. ); end if
  22. (setq bCnt(1+ bCnt))
  23.       ); end repeat
  24.      );end progn
  25.    ); end if
  26. oSet
  27. ); end of #Asmi_Extract_Dynamic_Blocks
  28. (defun #Asmi_Get_Dynamic_Property(Block Property / oVal)
  29. (if(= 'ENAME(type Block))
  30.    (setq Block(vlax-ename->vla-object Block))
  31.    ); end if
  32. (if(= :vlax-true(vla-get-IsDynamicBlock Block))
  33.    (foreach p(vlax-safearray->list
  34.         (vlax-variant-value
  35.           (vla-GetDynamicBlockProperties Block)))
  36.      (if(=(strcase Property)(strcase(vla-get-PropertyName p)))
  37. (if(vl-catch-all-error-p
  38.      (setq oVal(vl-catch-all-apply
  39.                  'vla-get-Value(list p))))
  40.   nil
  41.   (setq oVal(vlax-variant-value oVal))
  42.   ); end if
  43. ); end if
  44.      ); end foreach
  45.    ); end if
  46. oVal
  47. ); end of #Asmi_Get_Dynamic_Property
  48. (defun #Asmi_Set_to_List(Sel_Set VLA / Out)
  49. (setq Out
  50. (vl-remove-if 'listp
  51.    (mapcar 'cadr(ssnamex Sel_Set))))
  52.     (if VLA
  53.        (mapcar 'vlax-ename->vla-object Out)
  54.       Out
  55.       ); end if
  56.    ); end of #Asmi_Set_to_List
  57. (if
  58.    (and
  59.      (setq dySet(ssget "_X" '((0 . "INSERT"))))
  60.      (setq dySet
  61.      (#Asmi_Extract_Dynamic_Blocks dySet
  62.          '("Despiece (Prueba 03)")))
  63.      ); end if
  64.    (progn
  65.      (foreach bl(#Asmi_Set_to_List dySet T)
  66. (setq prLst(cons
  67.               (list
  68.                 (#Asmi_Get_Dynamic_Property bl "Dist (A-B)")
  69.                 (#Asmi_Get_Dynamic_Property bl "Dist (C-B)")
  70.                 (#Asmi_Get_Dynamic_Property bl "Dist (A-C)")
  71.                 ); end list
  72.                 prLst
  73.             ); end cons
  74.         ); end setq
  75. ); end foreach
  76.      (setq lLen(length prLst))
  77.      (while prLst
  78.          (setq rpLst(cons(append(car prLst)
  79.                       (list(- lLen(setq lLen(length (setq prLst
  80.                 (vl-remove(car prLst)prLst)))))))rpLst)
  81.           ); end setq
  82.        ); end while
  83.     (setq rpLst(vl-sort rpLst
  84.                 '(lambda(a b)(<(car a)(car b)))))
  85.     (princ "\n\n A-B         C-B         A-C         Count")
  86.     (princ "\n ------------------------------------------")
  87. (foreach str rpLst
  88. (princ(strcat "\n "(rtos(car str)) " "))
  89. (repeat(- 10(strlen(rtos(car str))))(princ " "))
  90. (princ(strcat " "(rtos(cadr str)) " "))
  91. (repeat(- 10(strlen(rtos(cadr str))))(princ " "))
  92. (princ(strcat " "(rtos(nth 2 str))" "))
  93. (repeat(- 10(strlen(rtos(nth 2 str))))(princ " "))
  94. (princ(strcat " "(itoa(last str))))
  95. ); end foreach
  96.      (princ "\n ------------------------------------------")
  97.      (textscr)
  98.      ); end progn
  99.    ); end if
  100. (princ)
  101. ); end of c:dycnt

 
内部代码并添加新的块名,例如:
 
  1. Command: dycnt
  2. A-B         C-B         A-C         Count
  3. ------------------------------------------
  4. 4           1           3           1
  5. 10          4           6           2
  6. 10          5.5         4.5         1
  7. 14          8           6           2
  8. 14          9.5         4.5         10
  9. 20          14          6           1
  10. 20          15.5        4.5         14
  11. 26          20          6           1
  12. 26          21.5        4.5         2
  13. ------------------------------------------

 
 
可见性状态不是代码无法工作的原因。
回复

使用道具 举报

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 17:30:55 | 显示全部楼层
早上好(来自西班牙)
阿斯米,你有填写属性的选项吗?
 
我有一个疑问,如果需要的话,我一直在修改列表以增加长度。
Ie;
1.AC、CB
2.AC、CD、DB。
3.AC、CD、DE、EB。
4.
5. …
 
这就是我所改变的。。。
 
 
回复

使用道具 举报

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 17:37:38 | 显示全部楼层
问候语。
 
很遗憾,我不懂西班牙语,我想问一下属性。您有两个属性“Distancia Tuberia”和“Tuberia”,请指定您希望看到的信息和格式。
回复

使用道具 举报

2

主题

439

帖子

536

银币

限制会员

铜币
-14
发表于 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”个单元
 
我的英语不好,我希望我已经澄清了。
 
我的想法是使用列表或表格修改属性。以及通过属性快速选择动态块的可能性。
回复

使用道具 举报

12

主题

26

帖子

15

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 17:43:16 | 显示全部楼层
总的来说很清楚,但对我来说,这是一个很大的工作。我稍后再谈。我应该说这比我想象的要难一点。你可以用距离CD、DE、EB等显示块和一些真实的图形(如果不想在论坛上发布,请查看我的网站上的电子邮件)。
 
对我来说,英语也不是母语。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 19:30 , Processed in 0.373264 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表