尘缘一生 发表于 2019-12-10 23:45:21

求段线宽代码。

本帖最后由 尘缘一生 于 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
      )


taoyi0727 发表于 2019-12-11 12:01:59

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
)

谢谢版主指正是这样的吗?

taoyi0727 发表于 2019-12-11 11:18:42

(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)))
        )
)

taoyi0727 发表于 2019-12-11 00:01:56

(vla-get-Lineweight (vlax-ename->vla-object (car (entsel))))

taoyi0727 发表于 2019-12-11 08:46:15

这个是获取图元的线宽

taoyi0727 发表于 2019-12-11 08:46:50

你也是一个夜猫子

taoyi0727 发表于 2019-12-11 10:16:41

(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:18

上面是获取图层默认线宽
这个样子应该可以

尘缘一生 发表于 2019-12-11 10:26:24

taoyi0727 发表于 2019-12-11 10:17
上面是获取图层默认线宽
这个样子应该可以

没办法,取不得,我就设线宽为0算了


taoyi0727 发表于 2019-12-11 10:36:30

本帖最后由 taoyi0727 于 2019-12-11 10:38 编辑

你要先搞清楚
当前线宽
图元线宽
图层线宽

taoyi0727 发表于 2019-12-11 10:44:22

这个样子的这个是获取图层线宽的

taoyi0727 发表于 2019-12-11 11:09:54

随层-1
随块-2
默认-3
页: [1] 2
查看完整版本: 求段线宽代码。