明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1995|回复: 2

[提问] 谁能根据eachy大神的思路编个根据线的总长度自动线型比例的程序呢

[复制链接]
发表于 2013-6-27 13:24:13 | 显示全部楼层 |阅读模式
;;原创: eachy
1 首先要简单了解下线形的定义(转贴自联机帮助)
例如,名为 DASHDOT 的线型定义为
*DASHDOT,Dash dot __ . __ . __ . __ . __ . __ . __ . __
A,.5,-.25,0,-.25
这表示一种重复图案,以 0.5 个图形单位长度的划线开头,然后是 0.25 个图形单位
长度的空移、一个点和另一个 0.25 个图形单位长度的空移。 该图案延续至直线的全
长,并以 0.5 个图形单位长度的划线结束。 该线型如下所示。
__ . __ . __ . __ . __ . __ . __ . __
2 再看看联机帮助中的 DXF 组码中TABLE部分的LTYPE
40 图案总长度

49 虚线、点或空间长度(每个元素一个条目)
3 实际测试

以 HIDDEN 为例,Load Hidden 线形,然后
_$ (tblsearch "ltype" "hidden")
((0 . "LTYPE") (2 . "HIDDEN") (70 . 0) (3 . "Hidden __ __ __ __ __ __ __ __ __ __ __ __ __ _")
(72 . 65) (73 . 2) (40 . 9.525) (49 . 6.35) (49 . -3.175))
_$
再看Hidden定义
*HIDDEN,Hidden __ __ __ __ __ __ __ __ __ __ __ __ __ __
A, 6.35, -3.175
然后看看当前的 Ltscale
_$ (getvar "ltscale")
1.0
从中可以看到 Code 40 = Code 49 + (abs Code 49),也就是一个线形周期的总长度,
试着改变 Ltscale 为 3
_$ (setvar "ltscale" 3)
3
_$ (tblsearch "ltype" "hidden")
((0 . "LTYPE") (2 . "HIDDEN") (70 . 0) (3 . "Hidden __ __ __ __ __ __ __ __ __ __ __ __ __ _")
(72 . 65) (73 . 2) (40 . 9.525) (49 . 6.35) (49 . -3.175))
_$
可以看到图面的线形放大了,而 Table 中的 Hidden 是不变的,当然 *.lin 中的定义也没变
用Dist粗略测量一下这个图上实际周期长度和Ltscale的关系,可以得出
图上一个周期的长度 = Code 40 x Ltscale
这就可以用来方便控制线形比例了,我们不必关心Ltscale是多少,只要确定这个实际周期长度
就可以反算出 Ltscale了
根据上面的测试整理的代码,这就是某些专业软件中指定线形周期功能的 Lisp 实现,很简单的

(defun c:tt (/ e d el lay lt l)
  (if (and (setq e (car (entsel "\n选择线形实体: ")));_不要选Continuous,没有意义
       (setq d (getdist "\n指定周期长度: "));_根据出图的大小确定或输入
      )
    (progn
      (setq el    (entget e)
        lay    (assoc 8 el)
      )
      (if (not (setq lt (cdr (assoc 6 el))));_ 如果指定了线形
    (setq lt (cdr (assoc 6 (tblsearch "layer" lay))));_ 线形是随层的
      )
      (setq l (cdr (assoc 40 (tblsearch "ltype" lt))));_
      (command ".ltscale" (/ d l));_计算需要的合适比例
    )
  )
  (princ)
)
发表于 2015-5-11 17:10:04 | 显示全部楼层
同求这个源程序,谢谢大神
发表于 2021-6-16 16:44:22 | 显示全部楼层
学习一下了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-16 19:51 , Processed in 0.165550 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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