乐筑天下

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

[编程交流] 更改对象(线)LTSCAL

[复制链接]

21

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 16:57:18 | 显示全部楼层 |阅读模式
大家好,我一直在尝试创建简单的lisp,它可以实现以下功能
 
1、选择对象(直线、多段线、圆、圆弧等)
2、提示用户输入所需的线型比例
 
但不幸的是,我的代码没有按我想要的方式工作,我们非常感谢您的帮助。非常感谢。
 
  1. (defun c:TEST (/ SSET )
  2. (setq sset (ssget))
  3. (command "_.CHANGE" SSET "_P" "LTSCALE" ))
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 17:18:29 | 显示全部楼层
  1. (defun C:test ( / n SS i e enx )
  2. (and
  3.         vlax-get-acad-object
  4.         (not (initget (+ 2 4)))
  5.         (or (setq n (getreal "\nSpecify new LTSCALE value < 1 >: ")) (setq n 1))
  6.         (setq SS (ssget "_:L"))
  7.         (repeat (setq i (sslength SS))
  8.                 (setq e (ssname SS (setq i (1- i))))
  9.                 (vla-put-LinetypeScale (vlax-ename->vla-object e) n)
  10.         ); repeat
  11. ); and
  12. (princ)
  13. ) (vl-load-com) (princ)
回复

使用道具 举报

21

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 17:44:25 | 显示全部楼层
非常感谢Grrr。干杯
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
325
发表于 2022-7-5 18:12:44 | 显示全部楼层
 
我还尝试了香草:
  1. (defun C:test ( / n SS i e enx )
  2. (and
  3.         (not (initget (+ 2 4)))
  4.         (or (setq n (getreal "\nSpecify new LTSCALE value < 1 >: ")) (setq n 1))
  5.         (setq SS (ssget "_:L"))
  6.         (repeat (setq i (sslength SS))
  7.                 (setq e (ssname SS (setq i (1- i))))
  8.                 (setq enx (entget e))
  9.                 (cond
  10.                         ( (assoc 48 enx)
  11.                                 (setq enx (subst (cons 48 n) (assoc 48 enx) enx))
  12.                         )
  13.                         ( (not (assoc 48 enx))
  14.                                 (setq enx (append (list (cons 48 n)) enx))
  15.                         )       
  16.                 ); cond                       
  17.                 (entmod enx) (entupd (cdr (assoc -1 enx)))
  18.         ); repeat
  19. ); and
  20. (princ)
  21. )

现在似乎可以工作了,第一次失败了,所以我放弃了使用VLISP(忘记从第一个代码中删除enx变量)。
仍然不起作用。
编辑:哦,我只需要使用
  1. (not (initget 4))

而不是
  1. (not (initget (+ 2 4)))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 13:27 , Processed in 0.608588 second(s), 71 queries .

© 2020-2025 乐筑天下

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