找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2189|回复: 16

[已解决] 怎么改变动态块,不同的图形(已解决)

[复制链接]
发表于 2018-10-1 20:36:30 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 bbbxxxccclt 于 2018-10-3 17:25 编辑

   举个例子就是一个动态块,不如是一个汽车的块,可以选着比如小轿车、货车、叉车等等的块,怎么用lisp控制选择比如小轿车或货车;请高手帮忙,一点头绪都没有;
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1227个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 3904个

财富等级: 富可敌国

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

使用道具 举报

发表于 2018-10-2 11:18:45 | 显示全部楼层
如果车名称和方块名称一致应该可以过滤名称吧

(defun c:tt ( / s o)
(prompt "\n选取动态块 ")
(if (setq s (ssget ":E:S" '((0 . "INSERT"))))
(progn (alert (vlax-get (setq o (vlax-ename->vla-object  (ssname s 0))) 'effectivename) )
;; (LM:setdynpropvalue 物件 属性 值 ) ;; 不是很明白“控制选择”,改变动态值?请参考LeeMac大师函数
)

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

使用道具 举报

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-10-2 15:33:13 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2018-10-2 16:22:08 | 显示全部楼层
lisperado 发表于 2018-10-2 11:18
如果车名称和方块名称一致应该可以过滤名称吧

(defun c:tt ( / s o)

可能我描述的不是很清楚,比如做了一个动态块,这个块含有4个不同的车图像(汽车/货车/小轿车/叉车),这个块插入图中后,有个下拉箭头选择不同的名称就出现不同车图像(其实就是不同名称显示的不同);现在想的是用lisp插入块,并选择好车子名称。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

 楼主| 发表于 2018-10-3 12:59:40 | 显示全部楼层

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

使用道具 举报

发表于 2018-10-3 15:17:40 | 显示全部楼层
本帖最后由 lisperado 于 2018-10-3 15:33 编辑
bbbxxxccclt 发表于 2018-10-3 12:59
在CAD执行命令时,可以选择车型,就可以选择不同的车,插入的块就以不同的车型出现

;o : 动态块
;i  = 整数值,第几位置nth来代替‘可见度’名称,不必记名称更具通用性 :)
;0=默认,1,2,3 或随意其它数值等等。。。

(defun vis-walk        (o i / a v)
  ;lisperado
  (foreach x (vlax-invoke o 'getdynamicblockproperties)
            (and (= (vla-get-propertyname x) "Visibility")
             (setq a  (vlax-get x 'AllowedValues)
                   v (nth (rem (abs i) (length a)) a)
                   )
             (vlax-put x 'value v)
             )
    )
  v
  )

;如有已知选择车型,可对照表位置
(vis-walk blk (vl-position "Audi" '("BMW" "Ferarri" "Audi" "Mini Cooper")))

;如果不清楚名称,随意数值
(vis-walk blk 8)

评分

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

查看全部评分

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

使用道具 举报

 楼主| 发表于 2018-10-3 17:24:50 | 显示全部楼层
lisperado 发表于 2018-10-3 15:17
;o : 动态块
;i  = 整数值,第几位置nth来代替‘可见度’名称,不必记名称更具通用性 :)
;0=默认,1,2 ...

谢谢 非常感谢!
刚开始运行 返回nil 没有什么反应
我把“visibility” 改为“可见性1” 后,就可以了,运行正常了
我是菜鸟中菜鸟,你的函数我怎么都查不到啊;

点评

是VLISP函数,具体可看看 VL开头的函数到底有哪些? 看看就知道了14 个回复 - 1132 次查看所有的VL开头的函数都在这了,2323个函数 (defun c:get-vl-func () (setq a (atoms-family 1)) (setq b (mapcar '(lambda  详情 回复 发表于 2018-10-3 17:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-10-3 17:32:58 | 显示全部楼层
bbbxxxccclt 发表于 2018-10-3 17:24
谢谢 非常感谢!
刚开始运行 返回nil 没有什么反应
我把“visibility” 改为“可见性1” 后,就可以了 ...

是VLISP函数,具体可看看

VL开头的函数到底有哪些? 看看就知道了
14 个回复 - 1132 次查看
所有的VL开头的函数都在这了,2323个函数 (defun c:get-vl-func () (setq a (atoms-family 1)) (setq        b (mapcar '(lambda (x) (if (xdrx_string_regexps "^vl(.*)-" x) (strcase x t) ...
2016-11-26 00:56 - newer - A/VLISP

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

使用道具 举报

 楼主| 发表于 2018-10-3 18:25:06 | 显示全部楼层
marting 发表于 2018-10-3 17:32
是VLISP函数,具体可看看

VL开头的函数到底有哪些? 看看就知道了14 个回复 - 1132 次查看所有的VL开 ...

学VLISP好难,这么多函数,知道名字也不会用,哈哈

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-10-3 18:36:22 | 显示全部楼层
本帖最后由 newer 于 2018-10-3 18:37 编辑
bbbxxxccclt 发表于 2018-10-3 18:25
学VLISP好难,这么多函数,知道名字也不会用,哈哈

学什么都在于理解先,理解了,就好用了。函数都有手册,用不着背,VLISP编辑器也会自动帮你弹出函数的拼写。关键是要理解对象的层次结构,知道什么去手册的哪个部分找说明。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2018-10-3 19:19:10 | 显示全部楼层
本帖最后由 lisperado 于 2018-10-3 19:20 编辑
bbbxxxccclt 发表于 2018-10-3 17:24
我是菜鸟中菜鸟,你的函数我怎么都查不到啊;

这VL基本函数在(请参考开发帮助:‘V’字母)‘倒灌’法,无论菜鸟或大师学VLISP必知!
(vlax-dump-object blk t)

; IAcadBlockReference: AutoCAD Block Reference Interface
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d077b4>
;   Document (RO) = #<VLA-OBJECT IAcadDocument 08ad0420>
;   EffectiveName (RO) = "TEST"
;   Handle (RO) = "B06"
;   HasAttributes (RO) = -1
;   Ha**tensionDictionary (RO) = -1
;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 170ebc64>
;   InsertionPoint = (-67.7083 116.539 0.0)
;   InsUnits (RO) = "Unitless"
;   InsUnitsFactor (RO) = 1.0
;   IsDynamicBlock (RO) = -1
;   Layer = "0"
;   Linetype = "ByLayer"
;   LinetypeScale = 1.0
;   Lineweight = -1
;   Material = "ByLayer"
;   Name = "*U9"
;   Normal = (0.0 0.0 1.0)
;   ObjectID (RO) = 2130668016
;   ObjectName (RO) = "AcDbBlockReference"
;   OwnerID (RO) = 2130255288
;   PlotStyleName = "ByLayer"
;   Rotation = 0.0
;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 170ebbf0>
;   Visible = -1
;   XEffectiveScaleFactor = 1.0
;   XScaleFactor = 1.0
;   YEffectiveScaleFactor = 1.0
;   YScaleFactor = 1.0
;   ZEffectiveScaleFactor = 1.0
;   ZScaleFactor = 1.0
; Methods supported:
;   ArrayPolar (3)
;   ArrayRectangular (6)
;   ConvertToAnonymousBlock ()
;   ConvertToStaticBlock (1)
;   Copy ()
;   Delete ()
;   Explode ()
;   GetAttributes ()
;   GetBoundingBox (2)
;   GetConstantAttributes ()
;   GetDynamicBlockProperties ()
;   GetExtensionDictionary ()
;   GetXData (3)
;   Highlight (1)
;   IntersectWith (2)
;   Mirror (2)
;   Mirror3D (3)
;   Move (2)
;   ResetBlock ()
;   Rotate (2)
;   Rotate3D (3)
;   ScaleEntity (2)
;   SetXData (2)
;   TransformBy (1)
;   Update ()

多谢marting大师出手协助
晓东有这么多强大函数!太棒了!学习学习
(xdrx_string_regexps "^vl(.*)-" x) (strcase x t) ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 11:20 , Processed in 0.374156 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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