明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2233|回复: 6

改不能选择 ByLayer 线型的修改线型比例的程序(已解决多谢zhynt大师帮助)

[复制链接]
发表于 2011-6-22 23:37 | 显示全部楼层 |阅读模式
本帖最后由 669423907 于 2011-6-26 18:29 编辑

小生愚笨,不会改,请大师们帮帮忙,先谢了。
求改不能选择 ByLayer 线型的修改线型比例的程序

动态修改线型比例
(defun c:bbl(/ ss alts pt gr s1 lt zq newscale)
  (prompt "\n 请选择物体: ")
  (setq ss   (ssget)
alts (getvar "LTSCALE")
pt   (getpoint "\n请选择一个点: ")
  )
  (while (= (car (setq gr (grread nil 5 0))) 5)
    (redraw)
    (grdraw (cadr gr) pt 1 1)
    (setq i -1)
    (while (setq s1 (ssname ss (setq i (1+ i))))
      (if (setq lt (cdr (assoc 6 (entget s1))))
(progn
  (setq zq  (cdr (assoc 40 (tblsearch "ltype" lt)))
newscale (/ (distance (cadr gr) pt) zq alts 1.)
  )
  (vla-put-LinetypeScale (vlax-ename->vla-object s1) newscale)
)
      )
    )
  )
  (redraw)
  (princ)
)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-5-24 23:53 | 显示全部楼层
能否将这个点去除,pt   (getpoint "\n请选择一个点: ")
只用选择自动调整。如图所示

本帖子中包含更多资源

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

x
回复 支持 0 反对 1

使用道具 举报

发表于 2011-6-23 01:30 | 显示全部楼层
本帖最后由 zhynt 于 2011-6-23 02:07 编辑

  1. (defun c:bbl (/ ss alts pt gr s1 lt newscale)
  2.   (prompt "\n 请选择物体: ")
  3.   (setq        ss   (ssget)
  4.         alts (getvar "LTSCALE")
  5.         pt   (getpoint "\n请选择一个点: ")
  6.   )
  7.   (while (= (car (setq gr (grread nil 5 0))) 5)
  8.     (redraw)
  9.     (grdraw (cadr gr) pt 1 1)
  10.     (setq i -1)
  11.     (while (setq s1 (ssname ss (setq i (1+ i))))
  12.       (if (setq lt (cdr (assoc 6 (entget s1))))
  13.         (progn
  14.           (setq zq (cdr (assoc 40 (tblsearch "ltype" lt))))
  15.           (if (/= zq 0)
  16.             (setq newscale (/ (distance (cadr gr) pt) zq alts 1.))
  17.             (setq newscale 1)
  18.           )
  19.         )
  20.         (progn
  21.           (setq        zq
  22.                  (cdr
  23.                    (assoc
  24.                      40
  25.                      (tblsearch
  26.                        "ltype"
  27.                        (cdr
  28.                          (assoc
  29.                            6
  30.                            (tblsearch "layer" (cdr (assoc 8 (entget s1))))
  31.                          )
  32.                        )
  33.                      )
  34.                    )
  35.                  )
  36.           )
  37.           (if (/= zq 0)
  38.             (setq newscale (/ (distance (cadr gr) pt) zq alts 1.))
  39.             (setq newscale 1)
  40.           )
  41.         )
  42.       )
  43.       (vla-put-LinetypeScale (vlax-ename->vla-object s1) newscale)
  44.     )
  45.   )
  46.   (redraw)
  47.   (princ)
  48. )
发表于 2011-6-23 02:16 | 显示全部楼层
因随层的线型没有组码6,所以原程序将其跳过去了。现在我新加了判断,当随层时,找其所在的图层,通过图层来确定线型。又实线的组码40的值为0,程序将出错(除数为零)所以再加以判断如果为0,将newscale的值置为1
 楼主| 发表于 2011-6-23 11:30 | 显示全部楼层
本帖最后由 669423907 于 2011-6-23 11:32 编辑

非常感谢你的热情帮助!
大师,要注意休息吖。
发表于 2011-7-6 15:27 | 显示全部楼层
终于完美解决了线型比例问题
发表于 2022-5-13 16:02 | 显示全部楼层
很好!解决问题了!感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 21:27 , Processed in 0.235372 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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