乐筑天下

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

[编程交流] 选择矩形(多段线)和

[复制链接]

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 18:54:16 | 显示全部楼层 |阅读模式
我可以用lisp打印到PNG,但在这个过程中,我必须拖动一个矩形窗口来显示我要在其中绘制的内容。(为工作做截图)。我希望能够在顶点内键入命令-->选择多段线-->打印。有没有办法获得两(2)个顶点,左上角和右下角,保存坐标并在plot lisp期间将其放回?
 
非常感谢。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:00:48 | 显示全部楼层
欢迎来到CADTutor jonthan
 
以下示例将提示用户选择LWPolyline对象,并返回顶点范围的左下角和右上角坐标(对于矩形多段线,这对应于左下角和右上角顶点):
您可以从程序中调用上述函数,并将函数返回的点分配给程序中存储绘图窗口点的变量。
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:01:24 | 显示全部楼层
感谢您的快速回复。我会试试看,如果成功了就告诉你。
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:05:23 | 显示全部楼层
所以它给了我正确的点,但是我怎么能把这些坐标分配给变量呢?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:09:14 | 显示全部楼层
 
为变量分配函数返回的点,例如:
  1. (if (setq lst (getwindowpoints))
  2.    (setq pt1 (car  lst)
  3.          pt2 (cadr lst)
  4.    )
  5. )
或:
  1. (mapcar 'set '(pt1 pt2) (getwindowpoints))
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:12:43 | 显示全部楼层
请跟我说,因为我是新手,仍在学习如何编写Lisp程序,但我不知道在哪里插入代码,你分配的变量。你能帮帮我吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:14:52 | 显示全部楼层
您需要发布现有代码。
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:20:12 | 显示全部楼层
很抱歉,关于如何
正确地编码,它只是一个脚本而不是lisp。我想去掉这两个暂停,并自动从代码中选取点。我需要帮助将你的代码实现到我的代码中。
  1. (defun C:HMI ()
  2. (command "-plot"
  3. ;Detailed plot configuration?
  4. "Yes"
  5. ;Enter Layout Name
  6. "Model"
  7. ;Enter an output device name
  8. "PublishToWeb PNG.pc3"
  9. ;Enter Paper Size (User Defined)
  10. "HMI"
  11. ;Enter Drawing Orientation
  12. "L"
  13. ;Plot Upside Down?
  14. "No"
  15. ;Enter Plot Area
  16. "Window"
  17. ;Pause the lisp for users input of points
  18. pause
  19. pause
  20. ;Enter Plot Scale
  21. "Fit"
  22. ;Enter plot offset
  23. "center"
  24. ;Plot with Style
  25. "yes"
  26. ;Enter plot style table name (none)
  27. "."
  28. ;Plot with lineweights?
  29. "yes"
  30. ;Enter Shade Plot Settings
  31. "As Displayed"
  32. ;Creating plot file and saving
  33. pause
  34. ;Save Changes to page setup
  35. "no"
  36. ;Proceed with plot
  37. "yes")
  38. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:24:04 | 显示全部楼层
请尝试以下操作:
  1. (defun c:hmi ( / lst )
  2.    (if (setq lst (getwindowpoints))
  3.        (command
  4.            "_.-plot"
  5.            "_Yes"  ; Detailed plot configuration?
  6.            "Model" ; Enter Layout Name
  7.            "PublishToWeb PNG.pc3" ; Enter an output device name
  8.            "HMI" ; Enter Paper Size (User Defined)
  9.            "_L"  ; Enter Drawing Orientation
  10.            "_N"  ; Plot Upside Down?
  11.            "_W"  ; Enter Plot Area
  12.            "_non" (car  lst)
  13.            "_non" (cadr lst)
  14.            "_F"  ; Enter Plot Scale
  15.            "_C"  ; Enter plot offset
  16.            "_Y"  ; Plot with Style
  17.            "."   ; Enter plot style table name (none)
  18.            "_Y"  ; Plot with lineweights?
  19.            "As Displayed" ; Enter Shade Plot Settings
  20.            "\"  ; Creating plot file and saving
  21.            "_N"  ; Save Changes to page setup
  22.            "_Y"  ; Proceed with plot
  23.        )
  24.    )
  25.    (princ)
  26. )
  27. (defun getwindowpoints ( / ent )
  28.    (while
  29.        (progn (setvar 'errno 0) (setq ent (car (entsel "\nSelect Polyline: ")))
  30.            (cond
  31.                (   (= 7 (getvar 'errno))
  32.                    (princ "\nMissed, try again.")
  33.                )
  34.                (   (= 'ename (type ent))
  35.                    (if (/= "LWPOLYLINE" (cdr (assoc 0 (entget ent))))
  36.                        (princ "\nPlease select an LWPolyline.")
  37.                    )
  38.                )
  39.            )
  40.        )
  41.    )
  42.    (if ent
  43.        (   (lambda ( lst ) (mapcar '(lambda ( x ) (apply 'mapcar (cons x lst))) '(min max)))
  44.            (mapcar 'cdr (vl-remove-if-not '(lambda ( x ) (= 10 (car x))) (entget ent)))
  45.        )
  46.    )
  47. )
  48. (princ)
回复

使用道具 举报

1

主题

10

帖子

9

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 19:25:07 | 显示全部楼层
非常感谢李,你是最棒的!也许我要求的太多了,但是否可以选择多个矩形多段线并用不同的名称分别保存它们?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:20 , Processed in 0.445222 second(s), 72 queries .

© 2020-2025 乐筑天下

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