乐筑天下

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

[编程交流] lisp的单Xline

[复制链接]

171

主题

447

帖子

276

银币

中流砥柱

Rank: 25

铜币
860
发表于 2022-7-5 15:15:00 | 显示全部楼层 |阅读模式
  1. (command "xline""H")

我需要通过屏幕上的选定点绘制一条单线。
并找到拾取点的坐标。
上述代码正在工作,但在插入一条xline后不会停止。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 15:26:53 | 显示全部楼层
不使用命令调用很容易:
  1. (defun c:foo (/ p)
  2. (if (setq p (getpoint "\Pick a point: "))
  3.    (entmakex (list '(0 . "XLINE")
  4.            '(100 . "AcDbEntity")
  5.            '(67 . 0)
  6.            '(8 . "XLINE")
  7.            '(100 . "AcDbXline")
  8.            (cons 10 p)
  9.            '(11 1.0 0.0 0.0)
  10.      )
  11.    )
  12. )
  13. (princ)
  14. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 15:36:10 | 显示全部楼层
您可能还会发现这个自定义xline程序很有用。
回复

使用道具 举报

171

主题

447

帖子

276

银币

中流砥柱

Rank: 25

铜币
860
发表于 2022-7-5 15:39:35 | 显示全部楼层
谢谢你们两位提供代码。但是我需要在点拾取之前显示xline。帮助xline的点待定。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:49:31 | 显示全部楼层
  1. (command "_.xline" "_horizontal" pause "")
  2. (getvar 'lastpoint)
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:53:02 | 显示全部楼层
 
也许橡皮筋有帮助?
  1.    (setvar 'polarmode 1 )
  2.    (and
  3.    (setq p1 (getpoint "\nSpecify 1st point.. "))
  4.    (setq p2 (getpoint [color="red"]p1[/color] "Specify 2nd point.. "))
  5. (apply 'vla-AddXline
  6.         (cons msps
  7.               (mapcar ''((x) (vlax-3d-point (trans x 1 0))) (list p1 p2))
  8.               )
  9.         )
  10.    )
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:03:52 | 显示全部楼层
还有另一种方法,使用grread和LM:grsnap-
 
  1. ; Vertical/Horizontal XLINE demo
  2. ; Requires:
  3. ; http://www.lee-mac.com/grsnap.html
  4. (defun C:test ( / *error* )
  5. (defun *error* ( m )
  6.    (redraw)
  7.    (and m (princ m)) (princ)
  8. ); defun *error*
  9. (cond
  10.    ( (not LM:grsnap:snapfunction) (alert "\nPlease define 'LM:grsnap:snapfunction'") )
  11.    (
  12.      (
  13.        (lambda ( / osf osm a1 a2 vec s g k v d )
  14.          '(84 104 105 115 32 100 101 109 111 32 119 114 105 116 116 101 110 32 98 121 32 71 114 114 114 33 32 58 41)
  15.          (setq osf (LM:grsnap:snapfunction))
  16.          (setq osm (getvar 'osmode))
  17.          (mapcar 'set '(a1 a2 vec) '(0 1. (11 1.0 0.0 0.0)))
  18.          (princ "\nSpecify point for the xline [V]ertical: ")
  19.          (while (not s) (mapcar 'set '(k v) (setq g (grread t 15 0)))
  20.            (cond
  21.              ( (or (eq s '(2 13)) (= 25 k))
  22.                (setq s t)
  23.              )
  24.              ( (= k 5)
  25.                (setq d (* 3 (getvar 'viewsize)))
  26.                (redraw)
  27.                (setq v (osf (cadr g) osm))
  28.                (grdraw (polar v (* a1 PI) d) (polar v (* a2 PI) d) 1 3)
  29.              )
  30.              ( (= k 3)
  31.                (entmakex
  32.                  (append
  33.                    '( (0 . "XLINE") (100 . "AcDbEntity") (67 . 0) (100 . "AcDbXline") )
  34.                    (list (cons 10 (trans (osf (cadr g) osm) 1 0)))
  35.                    (list vec)
  36.                  )
  37.                ); entmakex
  38.                (setq s t)
  39.              )
  40.              ( (and (= k 2) (member v '(86 118)))
  41.                (princ "\nSpecify point for the xline [H]orizontal: ")
  42.                (mapcar 'set '(a1 a2 vec) '(0.5 1.5 (11 0.0 1.0 0.0)))
  43.              )
  44.              ( (and (= k 2) (member v '(72 104)))
  45.                (princ "\nSpecify point for the xline [V]ertical: ")
  46.                (mapcar 'set '(a1 a2 vec) '(0 1. (11 1.0 0.0 0.0)))
  47.              )
  48.            ); cond
  49.          ); while
  50.        ); lambda
  51.      )
  52.    )
  53. ); cond
  54. (*error* nil) (princ)
  55. ); defun
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:11:14 | 显示全部楼层
我的0.02美元setvar snapang
带光标大小100
回复

使用道具 举报

171

主题

447

帖子

276

银币

中流砥柱

Rank: 25

铜币
860
发表于 2022-7-5 16:19:47 | 显示全部楼层
是的,光标设置更好。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-9 19:42 , Processed in 0.821771 second(s), 70 queries .

© 2020-2025 乐筑天下

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