找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1327|回复: 3

[文章]:直观确定整体线形比例--指定线形周期长度

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2005-8-26 12:15:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
直观确定整体线形比例--指定线形周期长度

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 实现,很简单的

  1. (defun c:tt (/ e d el lay lt l)
  2.   (if (and (setq e (car (entsel "\n选择线形实体: ")));_不要选Continuous,没有意义
  3.            (setq d (getdist "\n指定周期长度: "));_根据出图的大小确定或输入
  4.       )
  5.     (progn
  6.       (setq el        (entget e)
  7.             lay        (assoc 8 el)
  8.       )
  9.       (if (not (setq lt (cdr (assoc 6 el))));_ 如果指定了线形
  10.         (setq lt (cdr (assoc 6 (tblsearch "layer" lay))));_ 线形是随层的
  11.       )
  12.       (setq l (cdr (assoc 40 (tblsearch "ltype" lt))));_
  13.       (command ".ltscale" (/ d l));_计算需要的合适比例
  14.     )
  15.   )
  16.   (princ)
  17. )


当然根据这个原理还可以写出单独控制实体线形比例的程序
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-6-27 12:39:35 | 显示全部楼层
你好 能写个自动线型比例的程序么  就是燕秀工具箱里的那样的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-27 19:44:49 | 显示全部楼层
谢谢楼主的分享!太好用了!收藏备用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2017-3-17 08:43:33 | 显示全部楼层
一张图纸的图框已经确定,如何确定周期长度?周期长度与图框比例有什么关系?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-18 20:16 , Processed in 0.467125 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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