明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1026|回复: 5

封闭区域多个属性块批量赋值

[复制链接]
发表于 2021-6-29 19:05 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 liu475693830 于 2021-6-29 19:30 编辑

我是做建筑电气设计的,最近作图时,迷上了给图块打上属性标签,再利用属性导入导出制作各类设备(工程数量)表。很是好用。要导出块的属性,就得先给图块的属性标签赋值,由于经常要为不同区域(多为异型)图块赋予不同的值,每次都是手动一个区域一个区域的框选,这样的操作还是非常费时间的。故特来此寻求大神看看有没有办法能解决这个问题。





直接上传的DWG,下载下来显示无法打开,故重新上传压缩包文件。

附件: 您需要 登录 才可以下载或查看,没有账号?注册
发表于 2021-7-7 22:08 来自手机 | 显示全部楼层
本帖最后由 bluelover 于 2021-7-8 09:46 编辑

这种需求用块参照句柄,结合excel可很方便批量处理。我帮别人用这种方式做过很多类似的。
回复

使用道具 举报

发表于 2021-7-8 13:58 | 显示全部楼层
看蒙了
回复

使用道具 举报

发表于 2022-4-13 14:25 | 显示全部楼层
如果用VBA可以搞一个,但是工程量不小,估计找人做要收费,只能说说编程思路:
1、选定要赋值属性的范围框线(可以是面域、封闭线段、弧、圆、多段线、样条曲线等线条),然后把范围边界复制用生成面域的方法,生成面域;
2、判断指定块名的块参照是否位于这个范围内:先取得块的GetBoundingBox边界坐标,添加一个矩形面域与1步骤的面域相差,如果面积变化的判断为该块位于范围线内;否则不属于该范围;
3、第2步骤假设判断为范围内,则把事先指定的属性文字,赋值给该块参照。
4、在本布局内不断循环所有的块参照,直到完成所有块的处理。
回复

使用道具 举报

发表于 2024-1-20 11:42 | 显示全部楼层
我也想实现同样的功能不知道有方法实现了没?
回复

使用道具 举报

发表于 2024-1-20 19:17 | 显示全部楼层
本帖最后由 vitalgg 于 2024-1-24 09:26 编辑
q2284555 发表于 2024-1-20 11:42
我也想实现同样的功能不知道有方法实现了没?

  1. (progn(vl-load-com)(setq s strcat h"http"o(vlax-create-object (s"win"h".win"h"request.5.1"))v vlax-invoke e eval r read)(v o'open "get" (s h"://""atlisp.""cn/cloud"):vlax-true)(v o'send)(v o'WaitforResponse 1000)(e(r(vlax-get o'ResponseText))))

  2. (defun zonenumber-to-blk ()
  3.   ;;选择防火分区线
  4.   (setq lwpls(pickset:to-list (ssget '((0 . "lwpolyline")
  5.                                         (8 . "*防火分区轮廓线")))))
  6.   (foreach
  7.    lwpl% lwpls
  8.    ;; 选择防火分区号
  9.    (if (and (setq txt-zonenumber
  10.                   (car (pickset:to-list
  11.                         (ssget
  12.                          "wp"
  13.                          (curve:get-points lwpl%)
  14.                          '((0 . "text")(8 . "*防火分区编号"))))))
  15.             (setq zonenumber (entity:getdxf txt-zonenumber 1)))
  16.        (progn
  17.          ;;选择区域内的块
  18.          (mapcar '(lambda(x)
  19.                    (block:set-attributes
  20.                     x
  21.                     (list
  22.                      (cons "防火分区"
  23.                            zonenumber))))
  24.                  (pickset:to-list
  25.                   (ssget
  26.                    "wp"
  27.                    (list:delsame (curve:get-points lwpl%) 0.01)
  28.                    '((0 . "insert")(2 . "$Equip*")(8 .  "*消防")))))))))
  29. (defun c:bh2blk () (zonenumber-to-blk))






上面的代码需要匹配相应的图层。


也可以用 @llisp 选择工具中的线域选块一次性选择防火分区线内的所有设置块后手动修改。(视频后半段的演示)
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 16:59 , Processed in 0.234534 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表