找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 10042|回复: 10

[原创] 替换图框(换属性块)

[复制链接]

已领礼包: 880个

财富等级: 财运亨通

发表于 2013-11-21 10:31:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

功能:换带属性的图框
说明:新图框和旧图框的属性数量可以不同,但新、旧块中的属性顺序要一致。
程序中用系统参数CMDNAMES判断命令是否结束。
源码:
  1. 功能:换带属性的图框,(新老块中的属性顺序需一致)
  2. (DEFUN C:CH-BLK1 ( / inde TXT e1 c-osmd )
  3.     (setq Inde (load_dialog "ch-blk"))
  4.         (new_dialog "ch1" inde)
  5.     (if (/= blkn3 nil)(set_tile "list1" blkn3))
  6.     (if (/= blkn4 nil)(set_tile "list2" blkn4))
  7.   (mode_tile "list2" 2)
  8.     (mode_tile "list1" 2)
  9.   (action_tile  "list1" "(setq blkn3 $value) ")
  10.     (action_tile  "list2" "(setq blkn4 $value)")
  11.   (start_dialog)
  12.    (unload_dialog inde)
  13.   (setq blkn3 (strcase blkn3) blkn4 (strcase blkn4))
  14.         (SETVAR "cmdecho" 0)
  15.         (command "_undo" "begin")
  16.     (setq c-osmd (GETVAR "OSMODE" ))      
  17.     (setvar"attdia" 0)
  18.     (setvar"attreq" 1)
  19.     (SETVAR "OSMODE" 0)
  20.     (SETQ TXT (CONS '(0 . "INSERT" ) (CONS (CONS '2 BLKN3) '())) )
  21.   (prompt "  选择需要变更的图块  >>> ")   

  22.     (IF (setq e1 (SSGET TXT) )
  23.       (PROGN  
  24.                (CH-BLK2 e1 blkn4)
  25.                (command "erase" e1 "")
  26.             )   
  27.         )
  28.         (terpri)
  29.     (SETVAR "OSMODE" c-osmd)
  30.         (command "_undo" "end")
  31.         (SETVAR "cmdecho" 1)
  32.     (princ)

  33. )
  34. (DEFUN CH-BLK2 (E1 bname / I LIS1 NAM N1 )
  35.     (REPEAT (SETQ I (SSLENGTH E1) )
  36.                 (SETQ I (- I 1)  )
  37.       (SETQ LIS1 (ENTGET (setq NAM(SSNAME E1 I) ))  )
  38.                 (command "_.insert" bname
  39.                              (cdr (assoc '10 lis1))
  40.                              (rtos (cdr (assoc '41 lis1)) 2 4)
  41.                              (rtos (cdr (assoc '42 lis1)) 2 4)
  42.                              (angtos (cdr (assoc '50 lis1)) 0 8)
  43.                 )
  44.        (WHILE  (/= "SEQEND"
  45.                             (SETQ N1 (cdr (assoc '0 (ENTGET (setq NAM (ENTNEXT NAM) )))))
  46.                         )
  47.         (IF (AND (= N1  "ATTRIB" ) (/= (GETVAR "CMDNAMES") "") )
  48.           (COMMAND (CDR (ASSOC '1 (ENTGET NAM)))   )
  49.                         )
  50.     );;;end while
  51.                 (WHILE (/= (GETVAR "CMDNAMES") "")(COMMAND "")   )
  52.   );;;end repeat   
  53. )


对话框:
  1.     ch1:dialog
  2.       {  label = /*MSG1*/ " -----图块替换------ ";
  3.          spacer;
  4.         : column {
  5.      : boxed_row {
  6.       label= "  实体源块  ";  
  7.              :edit_box{            
  8.                             key="list1";
  9.                             width = 50;
  10.                          }
  11.                        }
  12.            : boxed_row {
  13.       label= "  实体目标块  ";
  14.              :edit_box{            
  15.                             key="list2";
  16.                             width =50;
  17.                          }
  18.                        }
  19.                  }
  20.          ok_only;
  21.        }





论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-21 11:00:17 来自手机 | 显示全部楼层
没看懂楼主什么意思?这个和属性有什么关系?

点评

图框是属性块,一般图名、图号、比例、日期等内容做成属性文字 如果是普通块,用entmod就OK了  详情 回复 发表于 2013-11-21 11:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 880个

财富等级: 财运亨通

 楼主| 发表于 2013-11-21 11:03:28 | 显示全部楼层
st788796 发表于 2013-11-21 11:00
没看懂楼主什么意思?这个和属性有什么关系?

图框是属性块,一般图名、图号、比例、日期等内容做成属性文字
如果是普通块,用entmod就OK了

点评

没看到楼主属性文字替换  详情 回复 发表于 2013-11-21 11:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-21 11:24:25 来自手机 | 显示全部楼层
本帖最后由 st788796 于 2013-11-21 11:48 编辑
阿凯 发表于 2013-11-21 11:03
图框是属性块,一般图名、图号、比例、日期等内容做成属性文字
如果是普通块,用entmod就OK了


没看到楼主属性文字替换

command 替换不如用vla方法

点评

简单说: 块A替换成块B (块放大比例和属性文字等内容均不变),B块继承A块的属性文字。相当于,插入B块,删除A块 ,将A的属性文字复制粘贴到B。 换个图框版式,其它不变,仅此而已。 程序产生的原因: 1、院里  详情 回复 发表于 2013-11-21 12:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 880个

财富等级: 财运亨通

 楼主| 发表于 2013-11-21 12:20:41 | 显示全部楼层
st788796 发表于 2013-11-21 11:24
没看到楼主属性文字替换

简单说: 块A替换成块B (块放大比例和属性文字等内容均不变),B块继承A块的属性文字。相当于,插入B块,删除A块 ,将A的属性文字复制粘贴到B。
换个图框版式,其它不变,仅此而已。
程序产生的原因:

1、院里几乎每年都换标题栏版式,图名、图号等位置有变化。
2、不同专业做图时候选用的图框块会不同(如:选用横向标题栏或纵向标题栏),出图时要统一版式。



3、不同的人使用的诸如详图符号等带属性文字的块不一,进行统一。


编这个程序就是图个实用省事,编程的想法和代码都很一般。
如果说编程方面有什么可以交流的,也就是用了系统参数CMDNAMES控制:
  COMMAND命令未结束时,(getvar "CMDNAMES")返回命令名,命令已经结束则返回“”

点评

学习了。  详情 回复 发表于 2013-11-21 12:36
可以 blkrefor vlax-invoke entsel 'getattributes blkref vla-insert vlax-invoke blkref 'getattributes mapcar blkref blkrefor  详情 回复 发表于 2013-11-21 12:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-21 12:35:21 来自手机 | 显示全部楼层
阿凯 发表于 2013-11-21 12:20
简单说: 块A替换成块B (块放大比例和属性文字等内容均不变),B块继承A块的属性文字。相当于,插入B块 ...

可以
blkrefor vlax-invoke entsel 'getattributes
blkref vla-insert
vlax-invoke blkref 'getattributes
mapcar blkref blkrefor

评分

参与人数 1D豆 +3 收起 理由
xshrimp + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2013-11-21 12:36:22 | 显示全部楼层
阿凯 发表于 2013-11-21 12:20
简单说: 块A替换成块B (块放大比例和属性文字等内容均不变),B块继承A块的属性文字。相当于,插入B块 ...

学习了。{:soso_e179:}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-4-16 15:45:19 | 显示全部楼层
学习是美德,回复是习惯
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-10-10 13:39:43 | 显示全部楼层
楼主,如何运行这段代码?输入什么命令,谢谢!!!
l
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2015-10-10 13:54:34 | 显示全部楼层
运行时命令行输入ch-blk,提示错误; error: bad argument type: stringp nil
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2023-7-27 22:31:05 | 显示全部楼层
好东西,能不能批量框选
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 06:13 , Processed in 0.453251 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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