明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1333|回复: 26

[提问] 求段线宽代码。

[复制链接]
发表于 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
        )



"觉得好,就打赏"
还没有人打赏,支持一下
发表于 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
)

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

点评

对了,  发表于 2019-12-11 19:37
回复 支持 1 反对 0

使用道具 举报

发表于 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)))
        )
)
发表于 2019-12-11 00:01:56 | 显示全部楼层
(vla-get-Lineweight (vlax-ename->vla-object (car (entsel))))

点评

我在使用中,为什么是-1?  发表于 2019-12-11 00:38
这是取得这个实体图层的宽度,嗯。。。  发表于 2019-12-11 00:37
发表于 2019-12-11 08:46:15 | 显示全部楼层
这个是获取图元的线宽

点评

我就要线宽,是这个图元所在图层设置的线宽,BYLAYER线宽的提取。  发表于 2019-12-11 08:49
发表于 2019-12-11 08:46:50 | 显示全部楼层
你也是一个夜猫子
发表于 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)
发表于 2019-12-11 10:17:18 | 显示全部楼层
上面是获取图层默认线宽
这个样子应该可以

点评

不行的,出来的还是-1,-2,-3这些  发表于 2019-12-11 10:24
 楼主| 发表于 2019-12-11 10:26:24 | 显示全部楼层
taoyi0727 发表于 2019-12-11 10:17
上面是获取图层默认线宽
这个样子应该可以

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


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2019-12-11 10:36:30 | 显示全部楼层
本帖最后由 taoyi0727 于 2019-12-11 10:38 编辑

你要先搞清楚
当前线宽
图元线宽
图层线宽
发表于 2019-12-11 10:44:22 | 显示全部楼层
这个样子的  这个是获取图层线宽的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

这个值我是为了程序稳定,不崩溃用的。  发表于 2019-12-11 10:54
不 BYLAYER 有宽度,就取得了。没有宽度,BYLAYER 的话,宽度?  发表于 2019-12-11 10:52
实体没有43线宽组码话,它所在图层的线宽;但图层线宽是 BYLAYER的时候,要的这个数。  发表于 2019-12-11 10:51
发表于 2019-12-11 11:09:54 | 显示全部楼层
随层-1
随块-2
默认-3
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 11:22 , Processed in 0.218937 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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