Lisp文件需要一些帮助。
;;在平行平面上移动一个对象,直到它与另一个垂直;;然后旋转第一个对象,使其与之对齐。类似
;;“对齐”命令。
;;作者: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”操作系统)
)
)
) 欢迎来到论坛。请参阅代码发布指南:http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
你也没有提到你在寻求什么帮助? 我注意到你在每一个可能的CAD论坛上都发布了这篇文章,但没有回答人们提出的任何问题。回答一些问题,伙计。
我猜OP希望有人在没有回复的情况下发布固定代码。
现在的任何一天,任何一天。。。。。。。。。。。。
你有没有在Cad论坛上查过你的帖子?
你应该回复你的帖子,让你的代码按你想要的方式运行。
塔瓦特 我已经运行了代码,这是回来的:
RM
选择第一个对象:
输入距离是选择项:指定第二个点:
错误:错误的参数类型:点:
比较下面的两个代码,您在论坛之间对代码进行了更改。两者都不同。
您对选择对象的方式有问题。您还对代码中不一致的变量进行了更改(在命令调用中使用了之前未在程序中设置的变量)并且您对变量的命令调用的使用是不正确的。(也就是说,您正在使用一个变量,而您应该使用一个子命令。)另外,您试图使用logior对osmode做什么?
张贴于AUGI
;;Moves and object in a parallel plane of another until it is perpendicular
;;to it then rotates 1st object so that it lines up with it. Similar to
;;align command.
;;Written by Laison Albarado 11-09-2011
(defun 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 (getpoint "\nSelect 1st object: "))
(setq pt2 (getpoint pt1 "\nEnter second point: "))
(setq pt1 (getdistance "\nEnter Distance are select item: "))
(setvar "OSMODE" (logior os 1 2 4 32 128 8192))
(Setq pt3 (getpoint pt1 "\nSelect Reference point/object: "))
(command
"move" pt1 pt2
(setq ang1 (getangle pt1 pt3))
(setq pt4 (polar pt2 ang1 dst1))
(command
"rotate" pt1 pt3
(setvar "osmode" os)
)
)
)
张贴在这里的一号帖子上。
;;Moves an object in a parallel plane until it is perpendicular of another
;;it then rotates 1st object so that it lines up with it. Similar to
;;align command.
;;Written by Laison Albarado 11-09-2011
(defun 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 "\nSelect 1st object: ")))
(setq dis1 (getdist "\nEnter Distance are select item: "))
(setvar "OSMODE" (logior os 1 2 4 32 128 8192))
(Setq pt3 (getpoint pt1 "\nSelect Reference point/object: "))
(command
"move" pt1 pt2
(setq ang1 (getangle pt1 pt3))
(setq pt4 (polar pt2 ang1 dst1))
(command
"rotate" pt1 pt3
(setvar "osmode" os)
)
)
)
“秃鹰”你说的话真是一团糟。英雄联盟
无论如何,这是我第一次尝试写代码。我以前从未这样做过。是的,我有不同的论坛。我认为接触越多,我得到所需帮助的机会就越大。
该行包含“logior”。不久前,我提出了一个问题:“当编写代码时,您将在哪里设置OSMODE设置?您能在同一行中设置多个设置吗?”?
我希望它基本上是用来选择我的源项(我要移动的项)端点、中点、中心或交点,这取决于我移动的对象。
我把这个拿回来了:
(setq os (getvar "OSMODE"))
(setvar "OSMODE" (logior os 1 2 4 32))
我的一个朋友给了我这个部分:
(setvar "osmode" os)
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
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
李,
这是我第一次看到它,虽然我觉得它很整洁,但对于这个案例中正在完成的事情来说,它看起来有些过头了。您仍然可以组合正确数量的整数值来完成相同的操作。
页:
[1]
2