乐筑天下

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

[编程交流] 如何使LISP正常工作

[复制链接]

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:52:29 | 显示全部楼层
 
在窗口块的左侧,当捕捉到空白时,可以看到LISP可以完美地工作。在右侧,我突出显示了完成命令后行的结束位置。他们抓到了错误的地方。我试着缩小和增大光圈大小,没有差别。
 
http://imgur.com/fFb8Q3u
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 18:55:32 | 显示全部楼层
选择时请尝试启用osnap,当您到达实际绘制线的部分时,请将其禁用。
 
 
gr.Rlx
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 18:58:34 | 显示全部楼层
 
成功了!明亮的非常感谢。
 
这是供将来寻找它的人使用的代码。
 
  1. (defun c:grl3 (/ bb cl l os p1 p2 p3 p4)
  2.   (setq os (getvar 'OSMODE))
  3.   (setq cl (getvar 'CLAYER))
  4.   (setvar 'OSMODE 183)
  5.   (command "LAYER" "M" "Doors & Windows" "C" "21" "" "")
  6.   (setq p1 (getpoint "Pick First Corner: ")
  7.         p2 (getcorner p1 "\n Pick Diagonal Corner: ")
  8.          l (list p1 p2)
  9.         bb (list (apply 'mapcar (cons 'min l)) (apply 'mapcar (cons 'max l)))
  10.         p3 (car bb)   p4 (cadr bb)
  11.         p1 (list (car p3) (cadr p4))
  12.         p2 (list (car p4) (cadr p3))   
  13.   )
  14.   (setvar 'OSMODE 0)
  15.   (command "_LINE" (list (+ (car p1) 4) (cadr p1)) (list (+ (car p3) 4) (cadr p3)) "")
  16.   (command "_LINE" (list (car p1) (- (cadr p1) 4)) (list (car p4) (- (cadr p4) 4)) "")
  17.   (command "_LINE" (list (- (car p2) 4) (cadr p2)) (list (- (car p4) 4) (cadr p4)) "")
  18.   (command "_LINE" (list (car p2) (+ (cadr p2) 4)) (list (car p3) (+ (cadr p3) 4)) "")
  19.   (setvar 'CLAYER cl)
  20.   (setvar 'OSMODE os)
  21.   (princ)
  22. )
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:02:51 | 显示全部楼层
更改4个命令语句以暂时关闭osnap。
正在运行的osap不会受到影响。
 
  1. (command "_LINE" "NON" (list (+ (car p1) 4) (cadr p1)) (list (+ (car p3) 4) (cadr p3)) "")
  2. (command "_LINE" "NON" (list (car p1) (- (cadr p1) 4)) (list (car p4) (- (cadr p4) 4)) "")
  3. (command "_LINE" "NON" (list (- (car p2) 4) (cadr p2)) (list (- (car p4) 4) (cadr p4)) "")
  4. (command "_LINE" "NON" (list (car p2) (+ (cadr p2) 4)) (list (car p3) (+ (cadr p3) 4)) "")
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:05:24 | 显示全部楼层
 
这也行。谢谢
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:06:25 | 显示全部楼层
使用entmakex的另一种方法:
 
  1. (entmakex (list '(0 . "LINE") (cons 10 (list (car p1) (- (cadr p1) 4))) (cons 11 (list (+ (car p3) 4) (cadr p3)))))
  2. (entmakex (list '(0 . "LINE") (cons 10 (list (car p1) (- (cadr p1) 4))) (cons 11 (list (car p4) (- (cadr p4) 4)))))
  3. (entmakex (list '(0 . "LINE") (cons 10 (list (- (car p2) 4) (cadr p2))) (cons 11 (list (- (car p4) 4) (cadr p4)))))
  4. (entmakex (list '(0 . "LINE") (cons 10 (list (car p2) (+ (cadr p2) 4))) (cons 11 (list (car p3) (+ (cadr p3) 4)))))
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:11:36 | 显示全部楼层
这三种方法之间真的有区别吗?一个人的表现是否比其他人更好?
回复

使用道具 举报

0

主题

301

帖子

301

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 19:13:37 | 显示全部楼层
Entmaking会更快,并且不会受到osnap的影响。
 
虽然对于这个小程序来说,几乎不会有什么不同。
 
ymg公司
回复

使用道具 举报

5

主题

34

帖子

29

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 19:18:10 | 显示全部楼层
太棒了谢谢你的帮助。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 19:21:34 | 显示全部楼层
下面是另一种书写方式:
  1. (defun c:grl2 ( / pt1 pt2 tmp )
  2.    (if
  3.        (and
  4.            (setq pt1 (getpoint "\nSpecify first corner: "))
  5.            (if (zerop (getvar 'worlducs))
  6.                (setq pt2 (getpoint  pt1 "\nSpecify opposite corner: "))
  7.                (setq pt2 (getcorner pt1 "\nSpecify opposite corner: "))
  8.            )
  9.        )
  10.        (progn
  11.            (setq tmp (mapcar 'max pt1 pt2)
  12.                  pt1 (mapcar 'min pt1 pt2)
  13.                  pt2 tmp
  14.            )
  15.            (ln (cons  (+ (car pt1) 4) (cdr  pt1)) (cons (+ (car pt1) 4) (cdr pt2)))
  16.            (ln (cons  (- (car pt2) 4) (cdr  pt1)) (cons (- (car pt2) 4) (cdr pt2)))
  17.            (ln (vl-list* (car pt1) (+ (cadr pt1) 4) (cddr pt1)) (vl-list* (car pt2) (+ (cadr pt1) 4) (cddr pt2)))
  18.            (ln (vl-list* (car pt1) (- (cadr pt2) 4) (cddr pt1)) (vl-list* (car pt2) (- (cadr pt2) 4) (cddr pt2)))
  19.        )
  20.    )
  21.    (princ)
  22. )
  23. (defun ln ( a b )
  24.    (entmake (list '(0 . "LINE") '(8 . "Doors & Windows") (cons 10 (trans a 1 0)) (cons 11 (trans b 1 0))))
  25. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 20:21 , Processed in 0.430625 second(s), 70 queries .

© 2020-2025 乐筑天下

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