求段线宽代码。
本帖最后由 尘缘一生 于 2019-12-11 19:47 编辑我想,选择一个实体,
如果此实体有 43组码,则取得 43组码的“线宽” 值
若不存在43组码, 就取得这个实体所在图层的缺省线宽,
希望大家写下吧;以下代码为何取不对?。。。。。。。。。。。。。。。
(setq e (entget (setq nam (car(entsel "\n点选实体->取【线宽、线型、图层】:")))))
(if (assoc 43 e) ;;;;判断43组码是否存在
(setq xk (cdr (assoc 43 e)));;;线宽
(if (minusp (setq w (vla-get-lineweight (vlax-ename->vla-object nam))))
(setq xk 0)
(setq xk w)
)
;;;;(setq xk (vla-get-Lineweight (vlax-ename->vla-object nam))) ;;;为何总是-1
)
e2002 发表于 2019-12-11 11:24
线宽数值是个枚举 :
例如:
50 = 0.50mm
(defun c:tt (/ lineweight name obj)
(if (setq name (nentsel))
(progn
(setq obj (vlax-ename->vla-object (car name)))
(setq Lineweight (vla-get-Lineweight obj));获取线宽
(cond
((= Lineweight -1);随层
(setq obj (vlax-ename->vla-object (tblobjname "layer" (vla-get-Layer obj))));获取图层对象
(setq Lineweight (vla-get-Lineweight obj));获取线宽
)
((and
(= Lineweight -2);随块
(> (length name) 2);块存在
)
(setq obj (vlax-ename->vla-object (car (last name))));获取块对象
(setq Lineweight (vla-get-Lineweight obj));获取线宽
)
)
(if (= Lineweight -3);默认
(setq Lineweight (getvar "LWDEFAULT"))
)
)
)
Lineweight
)
谢谢版主指正是这样的吗? (defun c:tt (/ lineweight name obj)
(setq name (car (entsel)))
(if (assoc 43 (entget name))
(progn
(setq obj (vlax-ename->vla-object name))
(setq obj (vlax-ename->vla-object (tblobjname "layer" (vla-get-Layer obj))))
(if (= (setq Lineweight (vla-get-Lineweight obj)) -3);-3为默认线宽
0.0
Lineweight
)
)
(cdr (assoc 43 (entget name)))
)
) (vla-get-Lineweight (vlax-ename->vla-object (car (entsel)))) 这个是获取图元的线宽 你也是一个夜猫子 (setq obj (vlax-ename->vla-object (car (entsel))))
(setq obj (vlax-ename->vla-object (tblobjname "layer" (vla-get-Layer obj))))
(vla-get-Lineweight obj) 上面是获取图层默认线宽
这个样子应该可以 taoyi0727 发表于 2019-12-11 10:17
上面是获取图层默认线宽
这个样子应该可以
没办法,取不得,我就设线宽为0算了
本帖最后由 taoyi0727 于 2019-12-11 10:38 编辑
你要先搞清楚
当前线宽
图元线宽
图层线宽 这个样子的这个是获取图层线宽的
随层-1
随块-2
默认-3
页:
[1]
2