乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 46|回复: 17

[编程交流] 有关线型和的litle帮助

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:19:52 | 显示全部楼层 |阅读模式
早上好我需要一点帮助。我试着写一个lisp来画一条线
具有特定的石灰类型,但线条比例并不总是相同的
 
  1. (defun c:DASHDOT ()
  2. (command "_layer" "m" "DASHDOT" "c" "1" "" "")
  3. (setq scl (getvar "useri1"))
  4. ((SETQ DAS "DASHDOT")(setvar "LTSCALE" scl))
  5. (command  "linetype" "s" DAS "" )
  6. (print "draw DASHDOT line ")
  7. (print "")  
  8. (setq s1 (getpoint "give the first point :"))
  9. (print "")  
  10. (WHILE (setq s2 (getpoint s1 " give the second point :"))
  11. (print "")
  12. (command "line" s1 s2 "")
  13. (setq s1 s2)
  14. )
  15. )

 
当scl改变时,线型改变
 
谢谢
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:24:50 | 显示全部楼层
这假设设置了USERI1系统变量;如果不是,则返回0,这不是LTSCALE允许的值:
  1. (setq [color=magenta]scl[/color] (getvar "useri1"))
  2. ...
  3. (setvar "LTSCALE" [color=magenta]scl[/color])

请删除此语句的外括号:
  1. [color=red][s]([/s][/color](SETQ DAS "DASHDOT")(setvar "LTSCALE" scl)[color=red][s])[/s][/color]

此外,考虑不仅对命令使用下划线,而且对其选项也使用下划线。首先验证该层的存在是有用的:
  1. [color=red](if (not (tblsearch "LAYER" "DASHDOT"))[/color]
  2. (command "_layer" "[color=red]_[/color]m" "DASHDOT" "[color=red]_[/color]c" "1" "" "")
  3. [color=red])[/color]

使用系统字作为变量和函数(如DASHDOT)的名称不是一种好的编程实践,尽管这不是一种保留名称。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:29:04 | 显示全部楼层
你好,MSasu
我做了这个改变,lisp也能正常工作
  1. (defun c:TEST (/ scl klim)
  2. (if (not (tblsearch "LAYER" "DASHDOT"))
  3. (command "_layer" "_m" "DASHDOT" "_c" "1" "" "")
  4. )
  5. (setq scl (getvar "useri1"))
  6. (setq klim (* 0.0017 scl))
  7. (SETQ PER "DASHDOT" )
  8. (setvar "LTSCALE" klim)
  9. (command  "linetype" "s" per "" )
  10. (print "draw DASHDOT line ")
  11. (print "")  
  12. (setq s1 (getpoint "give the first point :"))
  13. (print "")  
  14. (WHILE (setq s2 (getpoint s1 " give the second point :"))
  15. (print "")
  16. (command "line" s1 s2 "")
  17. (setq s1 s2)
  18. )
  19. )

 
但我还有一个问题。运行lisp时,将线型比例更改为图形中的所有线。我不想将线型比例仅更改为特定的线条
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:33:37 | 显示全部楼层
这是正常的,因为LTSCALE系统变量控制用虚线类型绘制的所有图元的外观。要仅针对一个实体进行调整,只需添加以下语句即可。可能有助于确保对当前Osnap没有干扰。
  1. ...
  2. [color=red][s](setvar "LTSCALE" klim)[/s]
  3. [/color]...
  4. (command "[color=red]_[/color]line" [color=magenta]"_non"[/color] s1 [color=magenta]"_non"[/color] s2 "")
  5. [color=magenta](comamnd "_CHPROP" (entlast) "" "_S" klim "")[/color]
  6. ...
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:34:46 | 显示全部楼层
 
我无法理解。你能说得更具体些吗
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:40:24 | 显示全部楼层
  1. (defun c:TEST (/ scl klim)
  2. (if (not (tblsearch "LAYER" "DASHDOT"))
  3. (command "_layer" "_m" "DASHDOT" "_c" "1" "" "")
  4. )
  5. (setq scl (getvar "useri1"))
  6. (setq klim (* 0.0017 scl))
  7. (SETQ PER "DASHDOT" )
  8. (command  "linetype" "s" per "" )
  9. (print "draw DASHDOT line ")
  10. (print "")  
  11. (setq s1 (getpoint "give the first point :"))
  12. (print "")  
  13. (WHILE (setq s2 (getpoint s1 " give the second point :"))
  14. (print "")
  15. (command "line" s1 s2 "")
  16. (setq s1 s2)
  17. )
  18. )

 
那么呢
 
  1. (command "_line" "_non" s1 "_non" s2 "")
  2. (comamnd "_CHPROP" (entlast) "" "_S" klim "")

 
我只想更改这次绘制的部分线条的线型比例。例如,我画一条线,然后转到“特性”菜单并更改线型比例。然后我再画一条线,转到“属性”菜单,并给出另一个比例,但我不想将比例更改为预览线
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:42:42 | 显示全部楼层
我补充了一些意见:
  1. (comamnd "_CHPROP"   [color=blue];call the CHPROP command[/color]
  2.         (entlast)   [color=blue];select the last added entity (your line)[/color]
  3.         ""          [color=blue];close the selection process[/color]
  4.         "_S" klim   [color=blue];adjust the entity linetye scale property using the ltScale option[/color]
  5.         "")         [color=blue];last <Enter> will close the command which is repetitive.[/color]
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:46:40 | 显示全部楼层
不起作用。也许我做错了同样的事。我只想更改这条线的线型比例。我运行lisp并为图形中的所有线提供相同的线型比例,这是错误的。我对每条线使用不同的线型比例。。
我希望在线型管理器窗口中全局比例因子为1,当前对象比例为1,并且仅在“特性”窗口中必须更改线型比例
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-5 23:49:21 | 显示全部楼层
请发布最新更改的代码。
回复

使用道具 举报

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 23:54:16 | 显示全部楼层
  1. (defun c:TEST1 (/ scl klim)
  2. (if (not (tblsearch "LAYER" "DASHDOT"))
  3. (command "_layer" "_m" "DASHDOT" "_c" "1" "" "")
  4. )
  5. (setq scl (getvar "useri1"))
  6. (setq klim (* 0.0017 scl)
  7. (comamnd "_CHPROP"  "" "_S" klim "")
  8. (SETQ PER "DASHDOT" )
  9. (command  "_linetype" "s" per "" )
  10. (print "draw DASHDOT line ")
  11. (print "")  
  12. (setq s1 (getpoint "give the first point :"))
  13. (print "")  
  14. (WHILE (setq s2 (getpoint s1 " give the second point :"))
  15. (print "")
  16. (command "line" s1 s2 "")
  17. (setq s1 s2)
  18. )
  19. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-12 12:12 , Processed in 0.541908 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表