alanjt 发表于 2022-7-6 11:30:03

试试这个
 

(defun c:hln(/ LAS OS R1 R2 XNv XFv r2v Y1v X1v X2v P1v P2v xnh xfh r2h y1h x1h x2h p1h p2h)
(SETVAR "CMDECHO" 0)
(SETQ LAS(GETVAR "CLAYER"))
(SETQ OS (GETVAR "OSMODE"))
(initget "V H")
(setq direc(getkword "Type: Vert/Horiz<current>"))
;need to change from horizontal to vertical
;swap involves components of chosen line
;if statement should control use of those components
;simple way, if V then change components to XNV versus XNH, etc.
(command "layer" "s" "hid" "")
(setvar "osmode" 512)
(cond
((if(= "V" direc)
(
(SETQ R1(ENTSEL "Pick line: "))
(SETQ XNv(GETPOINT "Pick BOTTOM side of plate: "))(terpri);point selected on top line
(SETQ XFv(GETPOINT "Pick TOP hside of plate: "))(terpri);point selected on bottom line
(setq R2v(entget(car R1)))
(setq Y1v(CADR(ASSOC 10 R2v)))          ;X COORDINATE
(setq X1v(CADR XNv))                  ;BOTTOM SIDE Y COORDINATE
(setq X2v(CADR XFv))                  ;TOP SIDE Y COORDINATE
(SETQ P1v(LIST Y1v X1v))
(SETQ P2v(LIST Y1v X2v))
(command "line" p1v p2v /c/c)
))
((if(= "H" direc)
(
(SETQ R2(ENTSEL "Pick line: "))
(SETQ XNh(GETPOINT "Pick RIGHT side of plate: "))(terpri)
(SETQ XFh(GETPOINT "Pick LEFT side of plate: "))(terpri)
(setq R2h(entget(car R2)))
(setq Y1h(CADDR(ASSOC 11 R2h)))         ;Y COORDINATE
(setq X1h(CADR XNh))            ;NEAR SIDE X COORDINATE
(setq X2h(CAR XFh))                     ;FAR SIDE X COORDINATE
(SETQ P1h(LIST X2H Y1h))
(SETQ P2h(LIST X1h Y1h))            
(command "line" p1h p2h /c/c)
))
)))
(COMMAND "LAYER" "S" LAS "")
(SETVAR "OSMODE" 183)
(PRINC)
)

 
条件写入错误。

drwhite 发表于 2022-7-6 11:32:19

你是一只秃鹰!!!除了我在点提取上犯的一个错误外,它还能工作!!我真的对这个论坛印象深刻。谢谢

drwhite 发表于 2022-7-6 11:35:44

你的欢迎
你看到我用红色突出显示的地方了吗?
 
使用cond时不需要if部分。

drwhite 发表于 2022-7-6 11:36:53

我只是回顾了一些帖子,alanjt已经给了你答案。
 
你查过他的帖子了吗?
 
我只是抓住了线的末端,没有看到那个帖子。
 
你真的应该感谢alanjt。

The Buzzard 发表于 2022-7-6 11:42:09

我在你的代码中发现了一些其他问题。
 
这两条线:
(defun c:hln(/ LAS OS R1 R2 XNv XFv r2v Y1v X1v X2v P1v P2v xnh xfh r2h y1h x1h x2h p1h p2h)
(SETVAR "CMDECHO" 0)
(SETQ LAS(GETVAR "CLAYER"))
(SETQ OS (GETVAR "OSMODE"))
(initget "V H")
(setq direc(getkword "Type: Vert/Horiz<current>"))
;need to change from horizontal to vertical
;swap involves components of chosen line
;if statement should control use of those components
;simple way, if V then change components to XNV versus XNH, etc.
(command "layer" "s" "hid" "")
(setvar "osmode" 512)
(cond
((= "V" direc)
(SETQ R1(ENTSEL "Pick line: "))
(SETQ XNv(GETPOINT "Pick BOTTOM side of plate: "))(terpri);point selected on top line
(SETQ XFv(GETPOINT "Pick TOP hside of plate: "))(terpri);point selected on bottom line
(setq R2v(entget(car R1)))
(setq Y1v(CADR(ASSOC 10 R2v)))          ;X COORDINATE
(setq X1v(CADR XNv))                  ;BOTTOM SIDE Y COORDINATE
(setq X2v(CADR XFv))                  ;TOP SIDE Y COORDINATE
(SETQ P1v(LIST Y1v X1v))
(SETQ P2v(LIST Y1v X2v))
(command "line" p1v p2v /c/c))
((= "H" direc)
(SETQ R2(ENTSEL "Pick line: "))
(SETQ XNh(GETPOINT "Pick RIGHT side of plate: "))(terpri)
(SETQ XFh(GETPOINT "Pick LEFT side of plate: "))(terpri)
(setq R2h(entget(car R2)))
(setq Y1h(CADDR(ASSOC 11 R2h)))         ;Y COORDINATE
(setq X1h(CADR XNh))            ;NEAR SIDE X COORDINATE
(setq X2h(CAR XFh))                     ;FAR SIDE X COORDINATE
(SETQ P1h(LIST X2H Y1h))
(SETQ P2h(LIST X1h Y1h))            
(command "line" p1h p2h /c/c)))
(COMMAND "LAYER" "S" LAS "")
(SETVAR "OSMODE" 183)
(PRINC)
)
 
你应该这样做:

(command "layer" "s" "hid" "")
(COMMAND "LAYER" "S" LAS "")

 
这两条线:

(command "._-layer" "_m" "HID" "")
(command "._-layer" "_m" "LAS" "")

 
制作如下:

(command "line" p1v p2v /c/c))
(command "line" p1h p2h /c/c)))

drwhite 发表于 2022-7-6 11:44:14

 
我很少使用cond,在其他地方可能会使用两到三次。谢谢你的信息。

The Buzzard 发表于 2022-7-6 11:49:11

The Buzzard 发表于 2022-7-6 11:52:16

I just looked back a few posts and alanjt had given you the answer already.
 
Did you check his post out?
 
I just caught the end of the thread and did not see that post.
 
You really should thank alanjt.

The Buzzard 发表于 2022-7-6 11:54:44

I found some other problems in your code.
 
These two lines:

(command "layer" "s" "hid" "")(COMMAND "LAYER" "S" LAS "")
 
You should make like this:

(command "._-layer" "_m" "HID" "")(command "._-layer" "_m" "LAS" "")
 
And these two lines:

(command "line" p1v p2v /c/c))(command "line" p1h p2h /c/c)))
 
Make like this:

(command "._line" p1v p2v /c/c))(command "._line" p1h p2h /c/c)))

drwhite 发表于 2022-7-6 11:58:35

 
I have seldom used cond, maybe two or three times elsewhere.Thanks for the info.
页: 1 [2]
查看完整版本: “坏argum”是什么意思