yfywk 发表于 2016-4-27 20:27:49

动态图块选择一次的问题期待解决

本帖最后由 yfywk 于 2016-4-27 20:31 编辑

前段时间属性图块的文字选择已经解决,编写了自己想实现的功能,但就是每次需要选择两次,我需要先选择动态图块的文字,获取宽度,再选择动态块的线,将获取的文字宽度写入到动态块的线的距离值中,使线与文字宽度一致。但每次要选择两次,实在是让人揪心。能否解决一次选择的问题?各位大侠帮帮忙。
代码:

;; 获取动态块的属性-Lee Mac

;; 返回动态块的一个属性值 (如果存在)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; blk - VLA 类型动态块数据
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; prp - str 类型的动态块属性名称(不分大小写)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(defun LM:getdynpropvalue (blk prp)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq prp (strcase prp))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(vl-some '(lambda (x)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      (if (= prp (strcase (vla-get-propertyname x)))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    (vlax-get x 'value)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif      )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   (vlax-invoke blk 'getdynamicblockproperties)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; 设置动态块的属性值-Lee Mac
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; 修改一个动态块的属性值(如果存在)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; blk - VLA 类型的动态块数据
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; prp - str 类型的动态块属性名称(不分大小写)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; val - 新的动态块属性(数据类型随系统,常见为string)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;; 返回: 新的动态块属性(如果成功,否则nil)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(defun LM:setdynpropvalue (blk prp val)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq prp (strcase prp))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(vl-some
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    '(lambda (x)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif       (if (= prp (strcase (vla-get-propertyname x)))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   (progn
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   (vla-put-value
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif       x
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif       (vlax-make-variant
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif         val
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif         (vlax-variant-type (vla-get-value x))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif       )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   (cond (val)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   (t)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif       )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif   )
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    (vlax-invoke blk 'getdynamicblockproperties)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(defun c:test()
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (setq lenCH (car (apply 'mapcar (cons '- (reverse (textbox (entget(car(nentsel "\n请选择文字")))))))));获取块内文字长度,这段代码论坛中获取,谢谢
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif (setq lenw (rtos lenCH));转换文字长度串值
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(prompt "\n请选择图名.");这里继续选择属性块
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq dx_actdyn (vlax-ename->vla-object (car (entsel))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(LM:setdynpropvalue dx_actdyn "距离1" lenw);
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif;设置选择的动态属性块 ”距离1“ 长度为文字长度
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif    (princ)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
前一个帖子中自贡黄明儒大侠帮助过,但我个人是初学,没经过系统学习,都是点式了解的lisp,所以不能理解自贡黄明儒大侠的提示。下面是自贡黄明儒大侠的提示代码,我不明白怎么使用。

[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq e (entsel))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq p (cadr e))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq dx_actdyn (vlax-ename->vla-object e))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(nentselp p)

kozmosovia 发表于 2016-4-28 08:54:35

你直接给文字加个下划线不就行了?还自己画线做啥?

yfywk 发表于 2016-4-28 10:04:00

kozmosovia 发表于 2016-4-28 08:54 static/image/common/back.gif
你直接给文字加个下划线不就行了?还自己画线做啥?

给文字加下划线颜色只能随文字,这样不要打印,我需要下划线加粗,并且两端要空出来
页: [1]
查看完整版本: 动态图块选择一次的问题期待解决