hlammerts 发表于 2022-7-5 22:19:05

三维UCS挤出组合乐趣

我正在尝试生成一个三维实体例程,其中结合了UCS 3点函数。前3个点控制ucs,以下点应由用户给定,必须进行挤出。最后一部分我无法完成。
 
 
defun C:extucs()
(setq spt1(getpoint“\n指定UCS第一点”))
(setq spt2(getpoint“\n指定UCS第二点”)
(setq spt3(getpoint“\n指定UCS第三点”)
(命令“ucs”“3”spt1 spt2 spt3)
 
;;; ?? 在这里我要得到x点的数量
;;; ?? 这里从这些点绘制一条闭合样线
 
(命令“pline”暂停)
 
(命令“extrude”“p”pause pause“”);挤出此pline

hmsilva 发表于 2022-7-5 22:33:18

也许是这样的

(defun c:extucs ( / pt pt_list spt1 spt2 spt3)
(if (and (setq spt1 (getpoint "\nSpecify UCS 1st point"))
          (setq spt2 (getpoint "\nSpecify UCS 2nd point"))
          (setq spt3 (getpoint "\nSpecify UCS 3rd point"))
   )
   (progn
   (command "ucs" "3" spt1 spt2 spt3)
   (while
   (setq pt (getpoint "\nPick point: "))
   (setq pt_list (cons pt pt_list))
   )
   (if pt_list
   (progn
       (command "_.pline")
       (foreach pt pt_list (command pt))
       (command "_C")
   )
   )
   (command "_.extrude" "_L" "" "\\")
   (command "ucs" "_P")
   )
   )
(princ)
)

 
希望有帮助
亨里克

SLW210 发表于 2022-7-5 22:35:03

请阅读代码发布指南并编辑您的帖子,将代码包含在代码标签中。

AIberto 发表于 2022-7-5 22:41:48

 
美好的Henrique,当拾取点绘制pline时,我认为需要立即显示点与点之间的线!

hmsilva 发表于 2022-7-5 22:51:57

非常感谢。阿尔贝托。
我只是这样写代码,来回答OP请求
 
 
';;; ?? 在这里我要得到x点的数量
;;; ?? 在这里,从这些点绘制闭合样线'
 
 
我们可以只存储最后一个,使用命令pline,测试是否有新的ent,如果关闭,则挤出。。。
 
 
亨里克

hlammerts 发表于 2022-7-5 22:58:39

谢谢
我的问题是列表的形成
它应该是spt1,spt2,(pt-x量),与spt3闭合
然后拔出闭合线
 

(defun c:extucs ( / pt pt_list spt1 spt2 spt3)
(if (and (setq spt1 (getpoint "\nPick 1st point (UCS)"))
   (setq spt2 (getpoint "\nPick 2nd point (UCS)"))
          (setq spt3 (getpoint "\nPick 3rd point (UCS)"))          
   )
   (progn
   (grdraw spt1 spt2 6 1)
   (grdraw spt1 spt3 6 1)
   (command "ucs" "3" spt1 spt2 spt3)
   (while
   (setq pt (getpoint "\nPick point: "))
   (setq pt_list (cons pt pt_list))
   )
   (if pt_list
   (progn
       (command "_.pline")
       (foreach pt pt_list (command pt))
       (command "_C")
   )
   )
   (command "_.extrude" "_L" "" "\\")
   (command "ucs" "_P")
   )
   )
(princ)
)

hmsilva 发表于 2022-7-5 23:07:23

不客气,赫拉默茨。
如果我理解正确,可能是这样的:

(defun c:demo (/ pt pt_list spt1 spt1w spt2 spt2w spt3 spt3w)
(if (and (setq spt1 (getpoint "\nSpecify UCS 1st point"))
          (setq spt2 (getpoint "\nSpecify UCS 2nd point"))
          (setq spt3 (getpoint "\nSpecify UCS 3rd point"))
   )
   (progn
   (setq spt1w (trans spt1 1 0)
         spt2w (trans spt2 1 0)
         spt3w (trans spt3 1 0)
   )
   (command "ucs" "3" spt1 spt2 spt3)
   (command "_.pline" (trans spt3w 0 1) (trans spt1w 0 1) (trans spt2w 0 1))
   (while (setq pt (getpoint "\nNext point: "))
       (command pt)
   )
   (command "_C")
   (command "_.extrude" "_L" "" "\\")
   (command "ucs" "_P")
   )
)
(princ)
)

 
希望有帮助
亨里克

hlammerts 发表于 2022-7-5 23:18:13

这是一个很大的进步,亨里克。你让我工作做得更快了!

hmsilva 发表于 2022-7-5 23:22:23

很高兴它对你有用。
 
 
亨里克
页: [1]
查看完整版本: 三维UCS挤出组合乐趣