乐筑天下

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

[编程交流] C3D 2016 LISP不工作

[复制链接]

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 20:21:38 | 显示全部楼层
试试这个:
  1. (defun C:ROSNAP (/ tll tlle pt1 pt2 pt3)
  2. (graphscr)
  3. (setq tll (entsel "Select Object: "))
  4. (if tll (setq tlle (car tll) pt2 nil pt1 (cadr tll) nme (cdr (assoc 0 (entget tlle)))))
  5. (cond
  6.   ((= nme "LINE")(setq pt2 (osnap pt1 "midp") pt3 (osnap pt1 "endp")))
  7.   ((= nme "POLYLINE")(setq pt2 (osnap pt1 "midp") pt3 (osnap pt1 "endp")))
  8.           ((= nme "LWPOLYLINE")(setq pt2 (osnap pt1 "midp") pt3 (osnap pt1 "endp")))
  9.   ((= nme "ARC")(setq pt2 (osnap pt1 "endp") pt3 (osnap pt1 "cen")))
  10. )
  11. (if pt2 (setvar "snapang" (- (angle pt2 pt3)pi)))
  12. (princ)
  13. )

相关代码可能会对您有所帮助:
  1. ;| FIX CROSSHAIRS - toggles snap angle between zero & horizontal in twisted views
  2.   BY: TOM BEAUFORD
  3.   BeaufordT@LeonCountyFL.gov
  4.   LEON COUNTY PUBLIC WORKS ENGINEERING SECTION
  5. ID_SnpAng    [Toggle Snap Angle]^P(if(not C:fix)(load "fix_hair"));'fix
  6. ==================================================================|;
  7. (defun c:fix ()
  8. (if(= (+ (getvar "snapang")(getvar "viewtwist")) (* 2 PI))
  9. (setvar "snapang" 0.0)
  10. (setvar "snapang" (- (getvar "viewtwist")))
  11. )
  12. (princ)
  13. )
回复

使用道具 举报

5

主题

1074

帖子

1088

银币

初来乍到

Rank: 1

铜币
9
发表于 2022-7-5 20:23:43 | 显示全部楼层
添加新的几何中心捕捉选项可能会使LISP中使用的Osmode值无效。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 20:28:09 | 显示全部楼层
 
他的原始代码存储了osmode和snapmode值,以在代码末尾重置它们。奇怪的是,代码从来没有修改过任何一个,所以我从发布的修改版本中删除了它们。我没有安装2016,所以我认为设置snapang值而不是命令调用可以解决问题。
 
不过,谢谢你的提醒,当我到2016年的时候,我将不得不检查我所有的代码以获取对osmode的引用。位代码1024已从“清除所有对象捕捉”更改为“几何中心”。目前我检查的是位码16384,以查看OSNAP是否打开,2016年我可以假设它将是32768吗?
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:30:46 | 显示全部楼层
 
我不能因为这个代码而受到赞扬。这是几年前写的,在我99年开始在这里工作之前。
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:34:32 | 显示全部楼层
 
老实说,我不确定他们是否工作过。这个Lisp程序是在我99年开始在这里工作之前很久写的。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 20:35:16 | 显示全部楼层
 
它在2015年为一条生产线工作。LWPOLYLINE早在1997年就在r14中引入。因为它们没有在代码中解决,而且“R”捕捉选项从那时起就没有在帮助中列出,所以代码非常过时。我发布的修改后的ROSNAP是否正常?对于土木工程/测量工程,扭曲视图是常见的,因此我有一些相关的宏和例程。
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:41:23 | 显示全部楼层
 
是的,它有效。谢谢。这不是我真正想要的答案,因为我还有一些其他人的“命令”没有起作用。我会贴在这里,看看你们怎么想。
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:43:14 | 显示全部楼层
这里只有三个。我不想在这里停留太久。现在,如果有人想玩,我会上传整个内容。见鬼,我可能会的。再次感谢。
 
  1. (defun C:SPLIT ()
  2. (graphscr)
  3. (setq oldsnap (getvar "osmode"))
  4. (setq os (getvar "osmode"))
  5. (setvar "osmode" 1536)
  6. (setq l1 (getpoint "\nSelect line to be Split: "))
  7. (setq l2 (getpoint "\nSelect Cutting Edge: "))
  8. (setvar "osmode" os)
  9. (setq pt1 (osnap l1 "mid,qui"))
  10. (setq pt2 (osnap l1 "end,qui"))
  11. (setq pt3 (osnap l2 "mid,qui"))
  12. (setq pt4 (osnap l2 "end,qui"))
  13. (setq pt5 (inters pt1 pt2 pt3 pt4 nil))
  14. (command "BREAK" l1 "F" pt5 "@")
  15. (setvar "osmode" oldsnap)
  16. )
  1. (defun C:ARROW ()
  2. (graphscr)
  3.         (setq oldsnap (getvar "osmode"))
  4. (setq player (getvar "clayer"))
  5. (setq tll (entsel "Pick Point on Line Nearest End:"))
  6. (setq pt1 (cadr tll))
  7. (setq tlle (car tll))
  8. (setq layn (cdr (assoc '8 (entget tlle))))
  9. (setq pt2 (osnap pt1 "end,qui"))
  10. (setq pt3 (osnap pt1 "nea,qui"))
  11.           (setq size (getvar "dimscale"))
  12. (command "LAYER" "S" layn "")
  13. (command "INSERT" "ARROWHD" pt2 size "" pt3)
  14. (command "layer" "s" player "")
  15. (setvar "osmode" oldsnap)
  16. (setvar "clayer" oldlayer)
  17. )
  1. (defun C:AUTODIM1 ()
  2. (graphscr)
  3. (setq oldsnap (getvar "osmode"))
  4. (setq oldlayer (getvar "clayer"))
  5. (command "-layer" "s" "PR-2-NOTES" "")
  6. (setq rnd (getvar "dimzin"))
  7. (setq acr (getvar "luprec"))
  8. (setq obj1 (entsel "\nSelect Line to Dimension Above: "))
  9. (setq obj2 (car obj1))
  10. (setq pt1 (cdr (assoc '10 (entget obj2))))
  11. (setq pt2 (cdr (assoc '11 (entget obj2))))
  12. (setvar "dimzin"
  13. (setq dist (distance pt1 pt2))
  14. (setq txt1 (rtos dist 2 acr))
  15. (setq txt2 (strcat txt1 (chr 039)))
  16. (setq pt3 (cadr obj1))
  17. (setq pt4 (osnap pt3 "mid,qui"))
  18. (setq pt5 (osnap pt3 "nea,qui"))
  19. (setq angler (angle pt4 pt5))
  20. (setq angled (/ (* 180 angler) pi))
  21. (setq perpr (+ angler (/ pi 2)))
  22. (setq centerpt (polar pt4 perpr (/ (getvar "dimscale") 16)))
  23. (setvar "dimzin" rnd)
  24. (command "TEXT" "C" centerpt angled txt2)
  25. (setvar "osmode" oldsnap)
  26. (setvar "clayer" oldlayer)
  27. )
回复

使用道具 举报

2

主题

14

帖子

12

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 20:46:15 | 显示全部楼层
我的一位同事刚刚注意到,我们的代码中有“qui”。我们把它们拿出来,一切似乎都很顺利。我当然喜欢简单的修复。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 20:49:06 | 显示全部楼层
 
osnap命令的qui或quick选项在2015年的帮助中介绍,但在2016年的帮助中没有介绍。我猜他们最后把它扔了,反正也没发现它有什么用处。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 13:54 , Processed in 0.639609 second(s), 70 queries .

© 2020-2025 乐筑天下

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