prodromosm 发表于 2022-7-5 16:37:15

线型比例lisp帮助

您好,我正在使用此lisp代码在图形中插入围栏线型。我有一个小问题,因为a使用了很多行。问题是当我给予
(setvar“LTSCALE”6)然后线型设置中的全局比例因子转换为6。当我插入带有(setvar“LTSCALE”2)的线型时,全局比例因子转换为2。结果变得一团糟。我想将“属性”菜单中的线型比例更改为6或2,而不是全局比例因子。当我选择一条直线时,“特性”菜单中的线型比例为1。
 
(DEFUN C:SYR2 (/ CONVERT KLIM OLD_CLT S1 S2 SCL SS)
(setq old_clt (getvar 'CELTYPE))
(if (and (not (tblsearch "ltype" "fence"))
   (findfile "C:\\topocad\\topo.lin")
   )
   (command "-linetype" "l" "fence" "C:\\topocad\\topo.lin" "")
)
(if (tblsearch "ltype" "fense")
   (progn
   (setq ss (ssadd))
   (COMMAND "_layer" "_m" "_fense" "_c" "140" "_fense" "_lt" "fense" "fense" "")
   (SETQ KLIM 1)
   (COMMAND "_linetype" "_s" "fense" "")
   (setvar "PSLTSCALE" 1)
   (setvar "LTSCALE" 6)
   (setvar "MSLTSCALE" 1)
   (SETQ S1 (GETPOINT "\ngive the first point :"))
   (WHILE (SETQ S2 (GETPOINT S1 "\ngive the second point :"))
(COMMAND "_line" "non" S1 "non" S2 "")
(COMMAND "_CHPROP" (ENTLAST) "" "_S" KLIM "")
(ssadd (ENTLAST) ss)
(SETQ S1 S2)
   )
   (setvar 'CELTYPE old_clt)
   (initget "Yes No")
   (if (and (setq
convert (cond
   ((getkword "\nconvert to polyline? <N>: "))
   ("No")
   )
       )
       (/= (sslength ss) 0)
       (= convert "Yes")
)
(if (= (getvar 'PEDITACCEPT) 0)
(command "_.pedit" "_M" ss "" "_Y" "_J" "" "")
(command "_.pedit" "_M" ss "" "_J" "" "")
)
   )
   )
)
(princ)
)

Jef! 发表于 2022-7-5 16:47:07

需要更改的变量称为“celweight”(它设置新对象的线宽)
将初始celweight值存储到局部变量
更改celweight以匹配希望新对象具有的线宽替代
将celweight更改回初始值。
 
我还建议,如果用户点击escape并退出命令,则进行错误捕捉,将值还原为其原始值。

prodromosm 发表于 2022-7-5 16:53:09

我不想改变线宽。我想更改线型比例!!!!

prodromosm 发表于 2022-7-5 16:59:10

我只想在“属性”“常规”选项卡中更改线型比例

Jef! 发表于 2022-7-5 17:05:17

我的错。改为检查celtscale变量。(设置当前对象线型比例因子)

prodromosm 发表于 2022-7-5 17:09:22

我问错问题了!!!!
我在a*中有几行。lin文件
每条线(例如比例1:200)需要具有不同的线型比例。例如,围栏需要线型比例5,点尼罗河需要线型比例2。
当我插入围栏时,全局比例因子变为5。然后我插入一条点线,所有线的全局比例因子为2。问题是,每当我插入新行时,所有行的全局比例因子都会发生变化。然后变得一团糟。eatch line有没有办法保持自己的全球比例因子?如何修复我的线路。我使用带注释的比例和布局

ReMark 发表于 2022-7-5 17:14:05

根据定义,每个线型不能有“全局”比例因子。您希望每种不同的线型都有自己独特的比例因子。这难道不能通过使用工具选项板来实现吗?
 
补遗
 
我刚刚回答了我自己的问题。我启用了工具选项板并单击了“绘制”选项卡。我复制了Line命令并将此副本重命名为HiddenLine。我右键单击它并更改了线型(隐藏)和比例(5而不是1)的属性。然后我测试了它。成功全球LTSCALE因子保持在1。
 
Lisp不一定是解决所有问题的方法。有时,一种更直接(即简单)的方法也可以。

prodromosm 发表于 2022-7-5 17:21:53

是的,但如果ic hangr手动调整线型比例,则属性和全局比例仍为1,如果更改注释比例,则仍具有相同的线型比例。我不会看到任何改变!!!

ReMark 发表于 2022-7-5 17:25:57

我看到了变化,所以我不知道你指的是什么。
 
您是否使用布局并对视口应用比例?
 
如模型空间所示。顶部的黄线绘制在名为Test的图层上,该图层被指定为隐藏线型。LTSCALE为1。下面的白线是在0层上绘制的,通常使用连续线型,但我使用了最近创建的HiddenLine工具,正如其属性中所述,该工具的线型更改为隐藏,比例更改为5。LTSCALE保持在1。
 

ReMark 发表于 2022-7-5 17:32:16

与视口(洋红色)比例为1:2的布局中看到的两条线相同。LTSCALE尚未更改。仍然是1。
 
页: [1] 2
查看完整版本: 线型比例lisp帮助