乐筑天下

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

[编程交流] Lisp文件需要一些帮助。

[复制链接]

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 10:10:55 | 显示全部楼层 |阅读模式
;;在平行平面上移动一个对象,直到它与另一个垂直
;;然后旋转第一个对象,使其与之对齐。类似
;;“对齐”命令。
;;作者:Laison Albarado 2011年9月11日
(定义c:rm(/pt1 pt2 pt3 pt4 pt0 ang1 dst1)
(setq os(getvar“OSMODE”))
(setvar“OSMODE”(logior os 1 2 4 32 128 8192))
(setq pt1(car(entsel“\n选择第一个对象:”))
(setq dis1(getdist“\n输入距离是选择项:”))
(setvar“OSMODE”(logior os 1 2 4 32 128 8192))
(Setq pt3(getpoint pt1“\n选择参考点/对象:”)
(命令
“移动”pt1 pt2
(setq ang1(getangle pt1 pt3))
(setq pt4(极性pt2 ang1 dst1))
(命令
“旋转”pt1 pt3
(setvar“osmode”操作系统)
)
)
)
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:15:18 | 显示全部楼层
欢迎来到论坛。请参阅代码发布指南:http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
 
你也没有提到你在寻求什么帮助?
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:18:07 | 显示全部楼层
我注意到你在每一个可能的CAD论坛上都发布了这篇文章,但没有回答人们提出的任何问题。回答一些问题,伙计。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:22:16 | 显示全部楼层
 
我猜OP希望有人在没有回复的情况下发布固定代码。
 
现在的任何一天,任何一天。。。。。。。。。。。。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:24:26 | 显示全部楼层
 
你有没有在Cad论坛上查过你的帖子?
 
你应该回复你的帖子,让你的代码按你想要的方式运行。
 
塔瓦特
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 10:29:28 | 显示全部楼层
我已经运行了代码,这是回来的:
 
RM
选择第一个对象:
输入距离是选择项:指定第二个点:
错误:错误的参数类型:点:
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:32:46 | 显示全部楼层
 
比较下面的两个代码,您在论坛之间对代码进行了更改。两者都不同。
您对选择对象的方式有问题。您还对代码中不一致的变量进行了更改(在命令调用中使用了之前未在程序中设置的变量)并且您对变量的命令调用的使用是不正确的。(也就是说,您正在使用一个变量,而您应该使用一个子命令。)另外,您试图使用logior对osmode做什么?
 
 
张贴于AUGI
  1. ;;Moves and object in a parallel plane of another until it is perpendicular
  2. ;;to it then rotates 1st object so that it lines up with it. Similar to
  3. ;;align command.
  4. ;;Written by Laison Albarado 11-09-2011
  5. (defun c:rm (/ pt1 pt2 pt3 pt4 pt0 ang1 dst1)
  6. (setq os (getvar "OSMODE"))
  7. (setvar "OSMODE" (logior os 1 2 4 32 128 8192))
  8. (setq pt1 (getpoint "\nSelect 1st object: "))
  9. (setq pt2 (getpoint pt1 "\nEnter second point: "))
  10. (setq pt1 (getdistance "\nEnter Distance are select item: "))
  11. (setvar "OSMODE" (logior os 1 2 4 32 128 8192))
  12. (Setq pt3 (getpoint pt1 "\nSelect Reference point/object: "))
  13. (command
  14. "move" pt1 pt2
  15. (setq ang1 (getangle pt1 pt3))
  16. (setq pt4 (polar pt2 ang1 dst1))
  17. (command
  18. "rotate" pt1 pt3
  19. (setvar "osmode" os)
  20. )
  21. )
  22. )

 
 
张贴在这里的一号帖子上。
  1. ;;Moves an object in a parallel plane until it is perpendicular of another
  2. ;;it then rotates 1st object so that it lines up with it. Similar to
  3. ;;align command.
  4. ;;Written by Laison Albarado 11-09-2011
  5. (defun c:rm (/ pt1 pt2 pt3 pt4 pt0 ang1 dst1)
  6. (setq os (getvar "OSMODE"))
  7. (setvar "OSMODE" (logior os 1 2 4 32 128 8192))
  8. (setq pt1 (car (entsel "\nSelect 1st object: ")))
  9. (setq dis1 (getdist "\nEnter Distance are select item: "))
  10. (setvar "OSMODE" (logior os 1 2 4 32 128 8192))
  11. (Setq pt3 (getpoint pt1 "\nSelect Reference point/object: "))
  12. (command
  13. "move" pt1 pt2
  14. (setq ang1 (getangle pt1 pt3))
  15. (setq pt4 (polar pt2 ang1 dst1))
  16. (command
  17. "rotate" pt1 pt3
  18. (setvar "osmode" os)
  19. )
  20. )
  21. )
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
11
发表于 2022-7-6 10:33:29 | 显示全部楼层
“秃鹰”你说的话真是一团糟。英雄联盟
 
 
无论如何,这是我第一次尝试写代码。我以前从未这样做过。是的,我有不同的论坛。我认为接触越多,我得到所需帮助的机会就越大。
 
该行包含“logior”。不久前,我提出了一个问题:“当编写代码时,您将在哪里设置OSMODE设置?您能在同一行中设置多个设置吗?”?
 
我希望它基本上是用来选择我的源项(我要移动的项)端点、中点、中心或交点,这取决于我移动的对象。
 
 
我把这个拿回来了:
 
  1. (setq os (getvar "OSMODE"))
  2. (setvar "OSMODE" (logior os 1 2 4 32))

 
我的一个朋友给了我这个部分:
 
  1. (setvar "osmode" os)
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 10:39:09 | 显示全部楼层
 
Logior是处理OSMODE设置的最佳方法,因为它是位编码值,您可以有效地翻转未设置的位,同时保留以下位:
 
此处解释:
 
http://www.cadtutor.net/forum/showthread.php?43975-函数顺序&p=298061#post298061
 
或类似情况,关于布尔:
http://www.cadtutor.net/forum/showpost.php?p=306339&postcount=9
 
 
我假设您也提到了这个线程:
http://www.theswamp.org/index.php?topic=35639.0
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 10:40:58 | 显示全部楼层
 
OSMODE模式
 
类型:整数
保存在:注册表
初始值:4133
 
使用以下位代码设置运行对象捕捉模式:
 
0无
1个端点
2中点
4中心
8节点
16象限
32交叉口
64插入
128垂直
256切线
512最近
1024快速
2048视交叉点
4096扩展
8192并行
 
要指定多个对象捕捉,请输入其值的总和。例如,输入3指定端点(位代码1)和中点(位代码2)对象捕捉。输入16383指定所有对象捕捉。
 
使用状态栏上的Osnap按钮关闭对象捕捉时,除了OSMODE的正常值外,还会返回16384(0x4000)的位码。使用此附加值,开发人员可以为AutoCAD编写应用程序,并将此模式与已从“绘图设置”对话框中关闭的对象捕捉模式区分开来。设置此位将关闭运行对象捕捉。将OSMODE设置为关闭该位的值将打开运行对象捕捉。
 
 
我不是想挑剔,它看起来确实是随意剪切和粘贴的。这里是初学者学习的好地方:http://www.afralisp.net/index.php
 
 
 
李,
 
这是我第一次看到它,虽然我觉得它很整洁,但对于这个案例中正在完成的事情来说,它看起来有些过头了。您仍然可以组合正确数量的整数值来完成相同的操作。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 20:56 , Processed in 0.405009 second(s), 72 queries .

© 2020-2025 乐筑天下

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