明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 728|回复: 2

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

[复制链接]
发表于 2016-4-27 20:27:49 | 显示全部楼层 |阅读模式
本帖最后由 yfywk 于 2016-4-27 20:31 编辑

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

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

;; 返回动态块的一个属性值 (如果存在)
  • ;; blk - [vla] VLA 类型动态块数据
  • ;; prp - [str] str 类型的动态块属性名称(不分大小写)
  • (defun LM:getdynpropvalue (blk prp)
  •   (setq prp (strcase prp))
  •   (vl-some '(lambda (x)
  •         (if (= prp (strcase (vla-get-propertyname x)))
  •     (vlax-get x 'value)
  •         )
  •       )
  •      (vlax-invoke blk 'getdynamicblockproperties)
  •   )
  • )
  • ;; 设置动态块的属性值  -  Lee Mac
  • ;; 修改一个动态块的属性值(如果存在)
  • ;; blk - [vla] VLA 类型的动态块数据
  • ;; prp - [str] str 类型的动态块属性名称(不分大小写)
  • ;; val - [any] 新的动态块属性(数据类型随系统,常见为string)
  • ;; 返回: [any] 新的动态块属性(如果成功,否则nil)
  • (defun LM:setdynpropvalue (blk prp val)
  •   (setq prp (strcase prp))
  •   (vl-some
  •     '(lambda (x)
  •        (if (= prp (strcase (vla-get-propertyname x)))
  •    (progn
  •      (vla-put-value
  •        x
  •        (vlax-make-variant
  •          val
  •          (vlax-variant-type (vla-get-value x))
  •        )
  •      )
  •      (cond (val)
  •      (t)
  •      )
  •    )
  •        )
  •      )
  •     (vlax-invoke blk 'getdynamicblockproperties)
  •   )
  • )
  • (defun c:test()
  • (setq lenCH (car (apply 'mapcar (cons '- (reverse (textbox (entget(car(nentsel "\n请选择文字")))))))));获取块内文字长度,这段代码论坛中获取,谢谢
  • (setq lenw (rtos lenCH));转换文字长度串值
  • (prompt "\n请选择图名.");这里继续选择属性块
  •   (setq dx_actdyn (vlax-ename->vla-object (car (entsel))))
  •   (LM:setdynpropvalue dx_actdyn "距离1" lenw);
  • ;设置选择的动态属性块 ”距离1“ 长度为文字长度
  •     (princ)
  •   )
    前一个帖子中自贡黄明儒大侠帮助过,但我个人是初学,没经过系统学习,都是点式了解的lisp,所以不能理解自贡黄明儒大侠的提示。下面是自贡黄明儒大侠的提示代码,我不明白怎么使用。
    • (setq e (entsel))
    • (setq p (cadr e))
    • (setq dx_actdyn (vlax-ename->vla-object e))
    • (nentselp p)
发表于 2016-4-28 08:54:35 | 显示全部楼层
你直接给文字加个下划线不就行了?还自己画线做啥?
 楼主| 发表于 2016-4-28 10:04:00 | 显示全部楼层
kozmosovia 发表于 2016-4-28 08:54
你直接给文字加个下划线不就行了?还自己画线做啥?

给文字加下划线颜色只能随文字,这样不要打印,我需要下划线加粗,并且两端要空出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-20 13:39 , Processed in 0.257537 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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