乐筑天下

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

[编程交流] 缩放窗口

[复制链接]

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 17:17:28 | 显示全部楼层 |阅读模式
虽然我也不擅长编写脚本,但我更擅长用lisp编写脚本。
 
我想摆脱这一点,开始将脚本宏转换为lisp
 
如何编写缩放窗口lisp?
 
下面是脚本。它解释了我想做什么,但我希望它在Lisp程序。
 
 
^C^Cz;w结束;/。结束/
 
而且
 
 
我编写了一个简单的代码来更改实体的线条粗细。
再说一次,它是在脚本中,不是很好。我想选一条线,或者(如果我错过了)画一个篱笆,然后选择一组。我如何用lisp写这个?
 
^C^C\U更改;\\;Pt;
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:27:17 | 显示全部楼层
嗨,菜鸟,
 
这够了吗?
  1. (defun c:zw ()
  2. (setvar "cmdecho" 0)
  3. (command "zoom"
  4. "w"
  5. pause
  6. pause
  7. ) ; end zoom
  8. (setvar "cmdecho" 1)
  9. (princ)
  10. ) ; end program

 
 
 
对于宽度:
  1. (defun c:polyw ()
  2.    (if
  3.        (setq obs (ssget))
  4.            (progn
  5.                (command "_.pedit"
  6.                    "M"
  7.                    obs ""
  8.                    "w"
  9.                    pause
  10.                    ""
  11.                )
  12.            ) ; end progn
  13.    (alert "\nPlease Select Objects!")
  14.    ) ; end if
  15.    (princ)
  16. ) ; end program
回复

使用道具 举报

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 17:32:42 | 显示全部楼层
谢谢您的及时回复!
 
 
(defun c:zw()(setvar“cmdecho”0)(命令“zoom”“w”pause pause);结束缩放(setvar“cmdecho”1)(princ));结束程序
 
如何使缩放窗口在每次暂停之前捕捉到端点
 
 
 
对于宽度:
 
代码:
(defun c:polyw()(if(setq obs(ssget))(progn(command“_.pedit”“M”obs”““w”pause”“);结束程序(警报“\n请选择对象!”);结束if(princ));结束程序
 
事实上,这仍将节省大量时间。如何修改它,以便也可以选择单个行?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 17:43:37 | 显示全部楼层
为了使缩放窗口捕捉到端点,我想您可以使用以下方法:
 
  1. (defun c:zw ()
  2.    (setq pt1 (getpoint "\nSelect First Window Point: "))
  3.    (setq pt1 (osnap pt1 "_endp"))
  4.    (setq pt2 (getpoint "\nSelect Second Window Point: "))
  5.    (setq pt2 (osnap pt2 "_endp"))
  6.      (command "zoom"
  7.      "w"
  8.    pt1
  9.    pt2
  10.      ) ; end zoom
  11.     (princ)
  12. ) ; end program

 
但这并不理想。
 
对于多段线宽度转换,我提供的LISP应该可以让您选择一条直线,但如果不是所需的,那么我恐怕不知道如何创建这样的LISP
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 17:47:03 | 显示全部楼层
这里有一个选择。
  1. (defun c:zw () (setvar "cmdecho" 0) (command "zoom" "w" "_end" pause "_end" pause )
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 17:53:23 | 显示全部楼层
我更喜欢这个。
  1. (defun c:zw (/ pt1 pt2)
  2. (if
  3.   (and
  4.    (setq pt1 (getpoint "\nSelect First Window Point: "))
  5.    (setq pt1 (osnap pt1 "_end"))
  6.    (setq pt2 (getpoint "\nSelect Second Window Point: "))
  7.    (setq pt2 (osnap pt2 "_end"))
  8.   )
  9.    (command "._zoom" "_w" "_non" pt1 "_non" pt2) ; end zoom
  10. )
  11. (princ)
  12. ) ; end program
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 18:04:04 | 显示全部楼层
也许这是厚度:
  1. (defun c:changeThickness (/ ss tk)
  2. (prompt "\nSelect objects to change thickness:")
  3. (if
  4.   (and
  5.     (setq ss (ssget))
  6.     (setq tk (getdist "\nEnter a new thickness:"))
  7.   )
  8.    (command "._change" ss "" "_P" "_T" tk "")
  9. )
  10. (princ)
  11. )

 
只是一些想法。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 18:08:35 | 显示全部楼层
感谢您的输入CAB,我不知道如何在暂停之前放置“端点捕捉”并仍然使程序正常工作,因此我决定放置点选择并在缩放命令中使用点。
 
但至于厚度,我使用了“ssget”语法(和你一样),但我不确定新手是否喜欢类似于“entsel”选择选取框的选择。。。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2022-7-6 18:16:13 | 显示全部楼层
是的。
  1. (defun c:changeThickness (/ ent obj tk)
  2. (setvar "ErrNo" 0) ; reset variable
  3. (if (setq tk (getdist "\nEnter a new thickness:"))
  4.    (while
  5.      (cond
  6.        ((and (null(setq ent (car (entsel "\nSelect object to change thickness:"))))
  7.               (= 52 (getvar "ErrNo"))) ; <Enter> was hit
  8.         (prompt "\nUser Quit.") ; Bye bye
  9.        )
  10.        ((null ent)
  11.         (princ "\nMissed, Try Again.")
  12.        )
  13.        ((null (vlax-property-available-p
  14.                 (setq obj (vlax-ename->vla-object ent))
  15.                 'Thickness t))
  16.         (princ "\nNo Thickness or locked layer. Try Again.")
  17.        )
  18.        (t ; OK to update
  19.         (vla-put-thickness obj tk)
  20.         (princ "\nThickness updated.")
  21.        )
  22.      )
  23.    )
  24. )
  25. (princ)
  26. )
回复

使用道具 举报

32

主题

98

帖子

73

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
197
发表于 2022-7-6 18:18:23 | 显示全部楼层
非常感谢。
 
这将是一个很大的帮助
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 16:52 , Processed in 0.329291 second(s), 72 queries .

© 2020-2025 乐筑天下

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