如何获取属性块内文字的长度?(已解决选取问题)
本帖最后由 yfywk 于 2016-4-27 20:17 编辑学习lisp编程,自己制作小工具,以便画图方便使用,现在遇到一个问题:
属性图块内文字的长度如何获取? 同块外一样的。 (setq ent (car (nentsel "\n请选择文本:")))
(setq zf (cdr (assoc 1 (entget (ent))))); 提取文本得字符
(setq len (strlen zf));文本字符串的长度
使用这样的代码出现
请选择文本:; 错误: 函数错误: <图元名: 7ffff635980>
是怎么回事儿 yfywk 发表于 2016-4-23 18:39 static/image/common/back.gif
(setq ent (car (nentsel "\n请选择文本:")))
(setq zf (cdr (assoc 1 (entget (ent))))); 提取文本得字符 ...
再查查nentsel的用法吧,你的用法不对,你要的在nentsel返回的表里! 已经在论坛里查找到了相关代码,编写成了我需要的小工具,目前我需依据字符长短来调节属性块中文字下方线的长短。代码如下:;; 获取动态块的属性-Lee Mac
;; 返回动态块的一个属性值 (如果存在)
;; blk - VLA 类型动态块数据
;; prp - 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 类型的动态块数据
;; prp - str 类型的动态块属性名称(不分大小写)
;; val - 新的动态块属性(数据类型随系统,常见为string)
;; 返回: 新的动态块属性(如果成功,否则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)
)目前需要解决的是属性图块需要选择两次,不知是否有办法选择一次就可实现二次的修改问题? 帖子不要沉哦,求解决 (entsel)返回有一个点,nentsel可以利用这个点,这样就只选择一次了(nentsel利用这个点自动选择) (setq zf (cdr (assoc 1 (entget ent))))
ent前后的括号取消 自贡黄明儒 发表于 2016-4-25 11:46 static/image/common/back.gif
(entsel)返回有一个点,nentsel可以利用这个点,这样就只选择一次了(nentsel利用这个点自动选择)
貌似设置变量好像不行哦!不知道怎么利用 yfywk 发表于 2016-4-25 12:40 static/image/common/back.gif
貌似设置变量好像不行哦!不知道怎么利用
(setq e (entsel))
(setq p (cadr e))
(setq dx_actdyn (vlax-ename->vla-object e))
(nentselp p)
页:
[1]
2