乐筑天下

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

[编程交流] 转换CELTSCALE(&L)

[复制链接]

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:45:05 | 显示全部楼层 |阅读模式
大家好,
 
我有一个Lisp程序的要求,这将真正帮助我!
 
我需要将所有对象(当然是直线和样条线)的celtscale转换为celtscale/ltscale。
 
任何帮助都将不胜感激。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:49:57 | 显示全部楼层
我不确定自己是否完全理解,但也许:
 
  1. (defun c:ce/lt ( / ss )
  2. ;; © Lee Mac 2010
  3. (if (setq ss (ssget "_X" '((-4 . "<") (48 . 0.0))))
  4.    (
  5.      (lambda ( i / e )
  6.        (while (setq e (ssname ss (setq i (1+ i))))
  7.          (LM:Update
  8.            (LM:SubstDXF 48
  9.              (/ (getvar 'CELTSCALE) (cdr (assoc 48 (entget e)))) (entget e)
  10.            )
  11.          )
  12.        )
  13.      )
  14.      -1
  15.    )
  16. )
  17. (princ)
  18. )
  19. (defun LM:SubstDXF ( code value elist )
  20. (entmod
  21.    (subst
  22.      (cons code value) (assoc code elist) elist
  23.    )
  24. )
  25. )
  26. (defun LM:Update ( elist )
  27. (entupd
  28.    (cdr (assoc -1 elist))
  29. )
  30. )
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:54:39 | 显示全部楼层
我想我要问的是,如何获取(读取值)对象的线型比例(在“特性”选项板中列出的比例)?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:57:07 | 显示全部楼层
也许下面的链接会有所帮助。我想做同样的事情,除了新的线型比例是当前的一个函数。
 
新线型比例=(当前线型比例)(/LTSCALE)
 
http://forums.autodesk.com/t5/AutoCAD-2006/globally-reset-Linetype-Scale-for-all-entities-in-a-drawing/m-p/1410799
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 08:58:21 | 显示全部楼层
我的最后一篇代码帖子将对象的线型比例设置为其旧线型比例除以图形的ltscale sys var。
 
此更改仅适用于线型比例不等于1的对象。
094513vvxfnu7wppfqp7pq.jpg
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:02:41 | 显示全部楼层
好的,谢谢,但代码似乎没有任何作用。我设置了所需的ltscale,然后运行lisp,它不会更改线型比例。代码运行时没有错误,但似乎没有改变值。
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:05:34 | 显示全部楼层
可能是没有抓到对象-请尝试上面更新的代码。
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:09:33 | 显示全部楼层
修订后的规范半起作用。它会更改一些对象/线,然后出错。
 
命令:CE/LT
; 错误:错误的参数类型:numberp:nil
 
有什么建议吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:10:52 | 显示全部楼层
是的,我认为这可能会发生-因此在原始代码中使用过滤器。。。
 
好的,再试一次
回复

使用道具 举报

5

主题

22

帖子

17

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 09:15:37 | 显示全部楼层
  1. (defun c:ce/lt ( / ss )
  2. ;; © Lee Mac 2010
  3. (if (setq ss (ssget "_X"))
  4.    (
  5.      (lambda ( i / e )
  6.        (while (setq e (ssname ss (setq i (1+ i))))
  7.          (LM:Update
  8.            (LM:SubstDXF 48
  9.              (/ (cdr (assoc 48 (entget e))) (getvar 'ltscale)) (entget e)
  10.            )
  11.          )
  12.        )
  13.      )
  14.      -1
  15.    )
  16. )
  17. (princ)
  18. )
  19. (defun LM:SubstDXF ( code value elist )
  20. (entmod
  21.    (subst
  22.      (cons code value) (assoc code elist) elist
  23.    )
  24. )
  25. )
  26. (defun LM:Update ( elist )
  27. (entupd
  28.    (cdr (assoc -1 elist))
  29. )
  30. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 08:16 , Processed in 0.737339 second(s), 86 queries .

© 2020-2025 乐筑天下

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