找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: ljfzx

[已解决] 如何提取动态块中的查询参数并标注在图框旁边?

[复制链接]

已领礼包: 1757个

财富等级: 堆金积玉

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

使用道具 举报

已领礼包: 53个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 3915个

财富等级: 富可敌国

发表于 2018-4-20 23:49:16 | 显示全部楼层
;我贴一个
(defun c:test()
     (vl-load-com)
     (if (= (setq wzgd (getreal "\n注记文字高度<500>=")) nil)
         (setq wzgd 500)
     )
     (while (setq ent (car (entsel "\n选取动态块:")))
         (progn
              (setq obj (vlax-ename->vla-object ent))
              (vlax-invoke-method obj "GetBoundingBox" 'pmin 'pmax)
              (setq pmin (vlax-safearray->list pmin))
              (setq pmax (vlax-safearray->list pmax))
              (setq dxy (mapcar '- pmax pmin))
              (setq inPt (vlax-get obj "InsertionPoint"))
              (setq pt1 (mapcar '+ inpt (mapcar '* dxy '(0.5 1.0)) (list -300 (+ 100 (* 0.5 wzgd)))))
              (setq pt2 (mapcar '+ pt1 (list 0 (+ wzgd 250))))
              (setq arr (vlax-invoke-method obj "GetDynamicBlockProperties"))
              (setq jgz (vlax-safearray->list (vlax-variant-value arr)))
              (setq csb (mapcar '(lambda(objp)
                                      (vlax-dump-Object objp)
                                      (setq name (vlax-get-property objp "PropertyName"))
                                      (setq valu (vlax-variant-value
                                                       (vlax-get-property objp "Value")
                                                 )
                                       )
                                       (if (= (type valu) 'safearray)
                                           (setq valu (vlax-safearray->list valu))
                                       )
                                       (list name valu)
                                 )
                                 jgz
                          )
              )
              (setq zfc1 (strcat "图纸尺寸: "
                                 (vl-princ-to-string (/ (cadr (assoc "X向距离" csb)) 100))
                                 "×"
                                 (vl-princ-to-string (/ (cadr (assoc "Y向距离" csb)) 100))
                        )
             )
             (setq zfc2 (strcat "规    格: "  (cadr (assoc "图纸尺寸" csb))))
             (command "_text" pt1 wzgd 0 zfc2)
             (command "_text" pt2 wzgd 0 zfc1)
         )
     )
     (princ)
)

点评

挺好的,可以改成能够框选的吗?  详情 回复 发表于 2018-4-21 11:28

评分

参与人数 1D豆 +5 收起 理由
marting + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

 楼主| 发表于 2018-4-21 11:28:36 | 显示全部楼层
本帖最后由 ljfzx 于 2018-4-21 11:56 编辑
dnbcgrass 发表于 2018-4-20 23:49
;我贴一个
(defun c:test()
     (vl-load-com)

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

使用道具 举报

已领礼包: 3915个

财富等级: 富可敌国

发表于 2018-4-21 14:39:57 | 显示全部楼层
;另贴一个框选的
(defun c:test1()
     (vl-load-com)
     (setq AcadDoc (vla-get-ActiveDocument (vlax-get-acad-object)))

     (if (= (setq wzgd (getreal "\n注记文字高度<500>=")) nil)
         (setq wzgd 500)
     )

     (if (progn
             (princ "\n选取图框动态块:")
             (setq ssa (ssget '((0 . "insert"))))
         )
         (progn
             (vlax-for obj (vla-get-ActiveSelectionSet AcadDoc)
                 (setq arr (vl-catch-all-apply 'vlax-invoke-method (list obj "GetDynamicBlockProperties")))
                 (if (not (vl-catch-all-error-p arr))
                     (progn
                          (vlax-invoke-method obj "GetBoundingBox" 'pmin 'pmax)
                          (setq pmin (vlax-safearray->list pmin))
                          (setq pmax (vlax-safearray->list pmax))
                          (setq dxy (mapcar '- pmax pmin))
                          (setq inPt (vlax-get obj "InsertionPoint"))
                          (setq pt1 (mapcar '+ inpt (mapcar '* dxy '(0.5 1.0)) (list -300 (+ 100 (* 0.5 wzgd)))))
                          (setq pt2 (mapcar '+ pt1 (list 0 (+ wzgd 250))))
                 
                          (setq jgz (vlax-safearray->list (vlax-variant-value arr)))
                          (setq csb (mapcar '(lambda(objp)
                                                 (setq name (vlax-get-property objp "PropertyName"))
                                                 (setq valu (vlax-variant-value
                                                                  (vlax-get-property objp "Value")
                                                             )
                                                 )
                                                 (if (= (type valu) 'safearray)
                                                     (setq valu (vlax-safearray->list valu))
                                                 )
                                                 (list name valu)
                                             )
                                             jgz
                                   )
                         )
                         (setq zfc1 (strcat "图纸尺寸: "
                                            (vl-princ-to-string (/ (cadr (assoc "X向距离" csb)) 100))
                                            "×"
                                            (vl-princ-to-string (/ (cadr (assoc "Y向距离" csb)) 100))
                                     )
                         )
                         (setq zfc2 (strcat "规    格: "  (cadr (assoc "图纸尺寸" csb))))
                         (setq TObj (vla-AddText (vla-get-ModelSpace AcadDoc)
                                                 zfc2
                                                 (vlax-3d-point pt1)
                                                 wzgd
                                    )
                         )
                         ;(vlax-put-property TObj "Layer" tcm) ;设置图层,变量tcm保存所需的图层名,例如(setq tcm "图层1000"),程序运行前确保已经建立了名为"图层1000"的层
                         ;(vlax-put-property TObj "StyleName" ztm) ;设置字体样式名,变量ztm保存所需的样式名,例如(setq ztm "stz0.9"),程序运行前确保已经建立了名为"stz0.9"的字体样式


                         (setq TObj (vla-AddText (vla-get-ModelSpace AcadDoc)
                                                 zfc1
                                                 (vlax-3d-point pt2)
                                                 wzgd
                                    )
                         )
                         ;(vlax-put-property TObj "Layer" tcm) ;设置图层,变量tcm保存所需的图层名,例如(setq tcm "图层1000"),程序运行前确保已经建立了名为"图层1000"的层
                         ;(vlax-put-property TObj "StyleName" ztm) ;设置字体样式名,变量ztm保存所需的样式名,例如(setq ztm "stz0.9"),程序运行前确保已经建立了名为"stz0.9"的字体样式
                     )
                 )
             )
         )
     )

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

使用道具 举报

发表于 2019-1-15 15:35:36 | 显示全部楼层
其实不用LISP程序那么复杂,在动态块里面增加一个可见性的参数,在选择图幅时,显示对应的图幅尺寸文字。附件的图框文件可以参考。

图框.rar

73.53 KB, 下载次数: 5, 下载积分: D豆 -1 , 活跃度 1

参考

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

使用道具 举报

发表于 2019-1-15 15:43:22 | 显示全部楼层
我现在在想,如何动态的显示出图比例。比如我们一般按1:100将图框做成块,如果块的比例是1,那么出图比例就是1:100,如果图框的比例是1.5,那么出图比例就是1:150,现在还没有想出好的办法,请各位大神想想,出出主意。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

发表于 2019-1-15 15:45:38 | 显示全部楼层
我现在在想,如何动态的显示图框规格的同时,显示出图比例,显示如:图幅A2,比例1:150。比如我们一般按1:100将图框做成块,如果块的比例是1,那么出图比例就是1:100,如果图框的比例是1.5,那么出图比例就是1:150,现在还没有想出好的办法,请各位大神想想,出出主意。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:17 , Processed in 0.397703 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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