找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3009|回复: 19

[编程申请] 如何将设置好的拉伸动态块一键匹配到指定位置大小?

[复制链接]
发表于 2018-3-25 11:41:12 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 7762777 于 2018-3-28 14:28 编辑

第一次发帖,不知道问题描述的清不清楚

我希望可以很快速的将设置好的拉伸动态块,快速的匹配到指定位置的矩形内,不知道这个功能是否可以实现?

微信截图_20180324174624.png

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:源文件 
下载次数:43  文件大小:0 Bytes 
下载权限: 不限 以上  [免费赚D豆]



请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:动态块门板合集 
下载次数:40  文件大小:998 KB 
下载权限: 不限 以上  [免费赚D豆]



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

已领礼包: 1268个

财富等级: 财源广进

发表于 2018-3-25 12:59:09 | 显示全部楼层
本帖最后由 st788796 于 2018-3-25 13:06 编辑

  1. (defun c:tt (/ ms _box pt w h p1 p2 blk props)
  2.   (defun _box (ptl / minx maxy maxx miny xl yl)
  3.     (setq xl   (mapcar 'car ptl)
  4.           yl   (mapcar 'cadr ptl)
  5.           minx (apply 'min xl)
  6.           maxx (apply 'max xl)
  7.           maxy (apply 'max yl)
  8.           miny (apply 'min yl)
  9.     )
  10.     (list (list minx maxy 0.) (- maxx minx) (- maxy miny))
  11.   )
  12.   (setq        ms (vla-get-modelspace
  13.              (vla-get-activedocument (vlax-get-acad-object))
  14.            )
  15.   )
  16.   (while (and (setq p1 (getpoint "\n基点: "))
  17.               (setq p2 (getcorner p1 "\n对角点: "))
  18.          )
  19.     (mapcar 'set '(pt w h) (_box (list p1 p2)))
  20.     (setq
  21.       blk (vla-insertblock ms (vlax-3d-point pt) "门4A1" 1. 1. 1. 0.)
  22.     )
  23.     (setq props        (safearray-value
  24.                   (variant-value (vla-GetDynamicBlockProperties blk))
  25.                 )
  26.     )
  27.     (foreach prop props
  28.       (if (= (vla-get-PropertyName prop) "外形宽")
  29.         (vla-put-value prop w)
  30.       )
  31.       (if (= (vla-get-PropertyName prop) "外形高")
  32.         (vla-put-value prop h)
  33.       )
  34.     )
  35.   )
  36.   (princ)
  37. )

点评

你好,代码我套用了其他动态块。使用后发现 动态块的基点不是在第一基点的位置上,还能优化基点位置吗?  详情 回复 发表于 2019-3-1 20:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 14:22:37 | 显示全部楼层

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

使用道具 举报

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-3-25 16:32:40 | 显示全部楼层
7762777 发表于 2018-3-25 14:22
是否可以在代码里加入一个选择图块的步骤?因为我有很多常用的图块,并不是只有一个。

因为你是动态块,除非所有块里面都定义的是一样的参数,否则程序就只能适合一个。比如上面的程序是处理的门A,如果别的动态块定义的是其他的名字,就不行了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 17:04:32 | 显示全部楼层
Lisphk 发表于 2018-3-25 16:32
因为你是动态块,除非所有块里面都定义的是一样的参数,否则程序就只能适合一个。比如上面的程序是处理的 ...

我所有的动态块除了名字以外,其他参数设定都是一样的在这样的前提下还是不好添加一个选择图块的步骤么?
我对插件编写一无所知,只是脑子里有这样一个概念^_^

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2018-3-25 17:32:19 | 显示全部楼层
动态块除了名字,每个参数的名称也是要确定的,程序只是给你个示意,具体应用还要根据自己定义的名称及动态块特性名称来编程
vla-get-EffectiveName 获取 Insert 的动态块 BlockTableRecord 名称
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-3-25 17:38:18 | 显示全部楼层
7762777 发表于 2018-3-25 17:04
我所有的动态块除了名字以外,其他参数设定都是一样的在这样的前提下还是不好添加一个选择图块的步骤么? ...

帮你修改了下ST的代码,试试

  1. (defun c:tt (/ ms _box pt w h p1 p2 blk props)
  2.   (defun _box (ptl / minx maxy maxx miny xl yl)
  3.     (setq xl   (mapcar 'car ptl)
  4.           yl   (mapcar 'cadr ptl)
  5.           minx (apply 'min xl)
  6.           maxx (apply 'max xl)
  7.           maxy (apply 'max yl)
  8.           miny (apply 'min yl)
  9.     )
  10.     (list (list minx maxy 0.) (- maxx minx) (- maxy miny))
  11.   )
  12.   (setq        ms (vla-get-modelspace
  13.              (vla-get-activedocument (vlax-get-acad-object))
  14.            )
  15.   )
  16.   (if (and (setq blk (car (entsel "\n拾取图块<退出>:")))
  17.            (= (vla-get-objectname (setq blk (vlax-ename->vla-object blk)))
  18.               "AcDbBlockReference"
  19.            )
  20.            (or (setq blkname (vla-get-EffectiveName blk))
  21.                (setq blkname (vla-get-name blk))
  22.            )
  23.       )
  24.     (progn
  25.       (while (and (setq p1 (getpoint "\n基点: "))
  26.                   (setq p2 (getcorner p1 "\n对角点: "))
  27.              )
  28.         (mapcar 'set '(pt w h) (_box (list p1 p2)))
  29.         (setq
  30.           blk (vla-insertblock
  31.                 ms
  32.                 (vlax-3d-point pt)
  33.                 blkname
  34.                 1.
  35.                 1.
  36.                 1.
  37.                 0.
  38.               )
  39.         )
  40.         (setq
  41.           props        (safearray-value
  42.                   (variant-value (vla-GetDynamicBlockProperties blk))
  43.                 )
  44.         )
  45.         (foreach prop props
  46.           (if (= (vla-get-PropertyName prop) "外形宽")
  47.             (vla-put-value prop w)
  48.           )
  49.           (if (= (vla-get-PropertyName prop) "外形高")
  50.             (vla-put-value prop h)
  51.           )
  52.         )
  53.       )
  54.     )
  55.   )
  56.   (princ)
  57. )


点评

你好,代码可以用。使用后发现 动态块的基点不是在第一基点的位置上,麻烦能否优化下。谢谢了  详情 回复 发表于 2019-3-1 20:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 18:06:07 | 显示全部楼层
st788796 发表于 2018-3-25 17:32
动态块除了名字,每个参数的名称也是要确定的,程序只是给你个示意,具体应用还要根据自己定义的名称及动态 ...

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

使用道具 举报

 楼主| 发表于 2018-3-25 18:10:15 | 显示全部楼层
marting 发表于 2018-3-25 17:38
帮你修改了下ST的代码,试试

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-3-25 18:15:29 | 显示全部楼层
7762777 发表于 2018-3-25 18:10
实测用不了,两个图块,除了名字不一样,参数是一致的,我上传一个DWG您帮我测试一下可以么?

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

使用道具 举报

 楼主| 发表于 2018-3-25 18:21:02 | 显示全部楼层
marting 发表于 2018-3-25 17:38
帮你修改了下ST的代码,试试

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

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-3-25 18:51:08 | 显示全部楼层
7762777 发表于 2018-3-25 18:21
我发现问题了!你写的插件完美的解决了我的问题!感谢感谢!

发现了什么问题?

另外,不是我写的插件,你要谢谢ST,我只是修改了两行代码。还有,能把你其他的动态块打包贴上来吗,我参考下。

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

使用道具 举报

已领礼包: 812个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 333个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 03:37 , Processed in 0.533142 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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