找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6424|回复: 33

[原创] 将尺寸数值之间按照输入的关系式关联起来

[复制链接]

已领礼包: 924个

财富等级: 财运亨通

发表于 2014-10-18 23:10:08 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 txc6853234 于 2014-10-25 22:15 编辑

这个帖子之间发过一次,这几天在yxianfo的建议下,和我自己的思考。把这个插件重新编写了,修复了几个BUG!欢迎雅正!!!2014.10.25

小弟学习Vlisp有段时候了,受到论坛大哥们的很多帮组。今天发布一个自己做的插件!做这个插件的思路来源于工作中。在一次改动图纸尺寸时只改动了零部件的尺寸数值忘记改动了焊接图上相关联的尺寸,于是就想到做个关联尺寸的插件。目的是改动零部件上尺寸,焊接图上相关联的尺寸数值也会按照一点的关系式来改变!这个插件用到了反应器,在保存图纸后在此打开用关联尺寸回调可以把之前创建的关联尺寸再次关联起来!!!
核心部分得到了XDsoft和/db_自贡黄明儒两位大神的帮助!在此感谢这两位大神的帮助!现将次插件上传欢迎各位雅正。
注:创建关联尺寸的命令是dimreactor。关联尺寸回调命令是dimreactorback       2014.10.19
将尺寸与尺寸的数值通过输入的关系式关联起来.gif

游客,如果您要查看本帖隐藏内容请回复




评分

参与人数 2D豆 +15 贡献 +2 收起 理由
newer + 5 + 1 很给力!经验;技术要点;资料分享奖!
XDSoft + 10 + 1 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-10-19 08:25:52 来自手机 | 显示全部楼层
本帖最后由 iLisp 于 2014-10-19 08:28 编辑

Autocad还是用来精确绘图,尺寸用dimstyle控制才是正确方式

养成良好习惯,可以减少很多编程

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

使用道具 举报

已领礼包: 56个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 2026个

财富等级: 金玉满堂

发表于 2014-10-21 09:20:40 | 显示全部楼层
视频偏小不方便看,没明白怎么使用。

点评

加载创建关联尺寸VLX文件。然后输入命令:dimreactor。然后根据提示完成步骤!然后在你指定的驱动尺寸的特性里面改动数值!你就会发现其他尺寸也会按照你输入的关系式发生变化!保存图形,下次要用的话!先加载关联  详情 回复 发表于 2014-10-21 10:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-21 10:04:44 | 显示全部楼层
yxianfo 发表于 2014-10-21 09:20
视频偏小不方便看,没明白怎么使用。

加载创建关联尺寸VLX文件。然后输入命令:dimreactor。然后根据提示完成步骤!然后在你指定的驱动尺寸的特性里面改动数值!你就会发现其他尺寸也会按照你输入的关系式发生变化!保存图形,下次要用的话!先加载关联尺寸回调.VLX。输入命令dimreactorback
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2026个

财富等级: 金玉满堂

发表于 2014-10-22 10:56:54 | 显示全部楼层
本帖最后由 yxianfo 于 2014-10-22 11:00 编辑

经试用,首先应肯定程序的编写思路不错,但从真正实用的角度出发,提点小建议不知妥否。
使用本程序,似乎每个图形文件(即每张图)中只有一个驱动尺寸,可是在多数情况下是与实际不符的,必须要有多个驱动尺寸才有实用性;
如果能把程序写成“驱动尺寸”和“从动尺寸”可分别适用于两张图纸中,那么它的实用性就更强,不过要实现这样的想法可能比较难。

点评

你说的对,都在点上!第一点正是我现在正在做的!!第二点你的意思是说在一张图纸上改动驱动尺寸后,另外一张图纸的从动尺寸就会变动?  详情 回复 发表于 2014-10-22 19:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-22 19:59:10 | 显示全部楼层
yxianfo 发表于 2014-10-22 10:56
经试用,首先应肯定程序的编写思路不错,但从真正实用的角度出发,提点小建议不知妥否。
使用本程序,似乎 ...

你说的对,都在点上!第一点正是我现在正在做的!!第二点你的意思是说在一张图纸上改动驱动尺寸后,另外一张图纸的从动尺寸就会变动?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2026个

财富等级: 金玉满堂

发表于 2014-10-23 09:48:03 | 显示全部楼层
本帖最后由 yxianfo 于 2014-10-23 09:53 编辑

是的。即驱动尺寸和从动尺寸不但可以同时在一张图中,而且也可分开在两张图中,在一张图纸上改动驱动尺寸后,在打开另外一张有从动尺寸的图纸后可自动关联或通过一个命令来关联。
驱动尺寸和从动尺寸同时在一张图中不如分开在两张图中实用性强。若程序不能两者兼顾,就分别写出驱动尺寸和从动尺寸同时在一张图中的和分开在两张图中的两个单独的程序也可。

先把现在驱动尺寸和从动尺寸同时在一张图中的这个程序写成有多驱动尺寸的程序也有实用性。加油!

点评

首先感谢你对我这个插件提出了比较好的建议。经过这几天的重新编写现在在同一张图纸中现在能实现了多个驱动尺寸。而且回调的时候会添加一个驱动尺寸图层,用以识别那些是驱动尺寸。欢迎雅正!  详情 回复 发表于 2014-10-25 22:22
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-25 22:19:07 | 显示全部楼层
yxianfo感谢你对这个插件的关注,并提出了很好的建议。现在基本上已经实现了驱动尺寸和从动尺寸同时在一张图中的这个程序写成有多驱动尺寸的程序。欢迎雅正!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-25 22:22:13 | 显示全部楼层
yxianfo 发表于 2014-10-23 09:48
是的。即驱动尺寸和从动尺寸不但可以同时在一张图中,而且也可分开在两张图中,在一张图纸上改动驱动尺寸后 ...

首先感谢你对我这个插件提出了比较好的建议。经过这几天的重新编写现在在同一张图纸中现在能实现了多个驱动尺寸。而且回调的时候会添加一个驱动尺寸图层,用以识别那些是驱动尺寸。欢迎雅正!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 837个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-26 18:05:08 | 显示全部楼层
很久没有用过反应器了,按楼主的意思大致写了一个
  1. (defun c:tt (/ e ss d hl s1)
  2.   (if (and (progn
  3.              (princ "\n选择基准尺寸....")
  4.              (setq s1 (ssget ":S" '((0 . "DIM*"))))
  5.              (setq e (ssname s1 0))
  6.            )
  7.            (progn
  8.              (princ "\n选择关联尺寸....")
  9.              (setq ss (ssget '((0 . "dim*"))))
  10.              (ssdel e ss)
  11.              ss
  12.            )
  13.       )
  14.     (progn
  15.       (setq sl (sslength ss))
  16.       (while (setq d (ssname ss (setq sl (1- sl))))
  17.         (setq hl (cons (cdr (assoc 5 (entget d))) hl))
  18.       )
  19.       (vlax-ldata-put e "assocdimlist" hl) ;_记录关联标注句柄
  20.       (vlr-owner-add dim-assoc-change (vlax-ename->vla-object e))
  21.     )
  22.   )
  23.   (princ)
  24. )
  25. (defun dim-change-callback (obj var1 var2 / hl scl adim)
  26.   (if (setq hl (vlax-ldata-get obj "assocdimlist"))
  27.     (progn
  28.       (if (/= (vla-get-textoverride obj) "");_是否修改了标注
  29.         (progn
  30.           (setq        scl (/ (distof (vla-get-textoverride obj))
  31.                        (vla-get-measurement obj)
  32.                     );_计算一个系数
  33.           )
  34.           (foreach x hl
  35.             (if        (not (vlax-erased-p (handent x)));_确保关联标准没有删除
  36.               (progn
  37.                 (setq
  38.                   adim
  39.                    (vla-handletoobject
  40.                      (vla-get-activedocument (vlax-get-acad-object))
  41.                      x
  42.                    )
  43.                 )
  44.                 (vla-put-textoverride
  45.                   adim
  46.                   (* (vla-get-measurement adim) scl)
  47.                 )
  48.               )
  49.             )
  50.           )
  51.         )
  52.       )
  53.     )
  54.   )
  55.   (princ)
  56. )
  57. ;;标注修改反应器
  58. (setq dim-assoc-change
  59.        (vlr-object-reactor
  60.          nil
  61.          nil
  62.          '((:vlr-modified . dim-change-callback))
  63.        )
  64. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-10-26 18:06:54 | 显示全部楼层
本帖最后由 st788796 于 2014-10-26 19:17 编辑

修改下回调函数
  1. (defun dim-change-callback (obj var1 var2 / hl scl adim)
  2.   (if (setq hl (vlax-ldata-get obj "assocdimlist"))
  3.     (foreach x hl
  4.       (if (not (vlax-erased-p (handent x))) ;_确保关联标准没有删除
  5.         (progn
  6.           (setq
  7.             adim
  8.              (vla-handletoobject
  9.                (vla-get-activedocument (vlax-get-acad-object))
  10.                x
  11.              );_句柄转 Object
  12.           )
  13.           (if (/= (vla-get-textoverride obj) "") ;_是否修改了标注
  14.             (progn
  15.               (setq scl        (/ (distof (vla-get-textoverride obj))
  16.                            (vla-get-measurement obj)
  17.                         ) ;_计算一个系数
  18.               )
  19.               (vla-put-textoverride
  20.                 adim
  21.                 (* (vla-get-measurement adim) scl)
  22.               )
  23.             )
  24.             (vla-put-textoverride adim "");_恢复默认
  25.           )
  26.         )
  27.       )
  28.     )
  29.   )
  30.   (princ)
  31. )

点评

谢谢你的码源分享。并且我也仔细的看了,从中也学到了一些东西。你的程序是根据驱动尺寸的textoverride和measurement的比值来修改从动尺寸的textoverride的数值!!而我这个程序是将驱动尺寸的textoverride或measure  详情 回复 发表于 2014-10-26 19:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 924个

财富等级: 财运亨通

 楼主| 发表于 2014-10-26 19:57:59 | 显示全部楼层

谢谢你的码源分享。并且我也仔细的看了,从中也学到了一些东西。你的程序是根据驱动尺寸的textoverride和measurement的比值来修改从动尺寸的textoverride的数值!!而我这个程序是将驱动尺寸的textoverride或measurement的数值通过用户输入的关系式进行运算得出的结果作为从动尺寸的textoverride数值!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 04:15 , Processed in 0.429405 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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