motee-z 发表于 2022-7-6 15:16:12

绘制样条并求z

你好,朋友们
我有一个lisp,可以绘制3dpolyline,然后从屏幕上的文本中选择z
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(定义c:3dPol2(/a)
(命令“_3dpoly”)
(while(等式1(logand 1(getvar“cmdactive”)))
(如果
(setq a(获取点a“\n拾取点:”)
(setq a(getpoint“\n Pick start Point:”)
)
(setq osmd(getvar“osmode”))
(initget 1)
(setq pt11(entget(car(entsel“\n点击文本级别:”)))
(setq txtstr1(assoc 1 pt11))
(setq dlv1(atof(cdr txtstr1)))
(普林斯dlv1)
(setvar“osmode”0)
(如果
(命令(list(car a)(cadr a)dlv1))
(命令)
 
)
(setvar“osmode”osmd)
)
 
(普林斯)
)
;;;;;;;;;;;;;;;;;;
我的问题是绘制样条曲线,然后在绘图中的某个地方选取一个文本作为z值
任何帮助都将不胜感激
谢谢

Lee Mac 发表于 2022-7-6 15:26:55

文本是否只包含一个数字?还是你的目标是文本的位置?
 
编辑:对不起,我应该对LISP进行更多分析-我看到z坐标包含在文本中。

Lee Mac 发表于 2022-7-6 15:31:23

也许是这个?
 

(defun c:3dPol2    (/ pt1 txt zval cmpt)
(if (and (setq pt1 (getpoint "\nSpecify Start Point > "))
      (setq txt (car (entsel "\nPick Text > ")))
      (member (cdr (assoc 0 (entget txt))) '("TEXT" "MTEXT")))
   (progn
   (setq zval (cdr (assoc 1 (entget txt)))
       cmpt (strcat (rtos (car pt1)) "," (rtos (cadr pt1)) "," zval))
   (command "_3dpoly" cmpt)
   (while (> (getvar "cmdactive") 0)
   (if (and (setq pt1 (getpoint pt1 "\nConstruct Other Points > "))
      (setq txt (car (entsel "\nPick Text > ")))
            (member (cdr (assoc 0 (entget txt))) '("TEXT" "MTEXT")))
      (progn
             (setq zval (cdr (assoc 1 (entget txt)))
             cmpt (strcat (rtos (car pt1)) "," (rtos (cadr pt1)) "," zval))
          (command cmpt))
   (command))))
   (princ "\n<!> No Point/Text Selected <!> "))
(princ))
   
            
   

motee-z 发表于 2022-7-6 15:37:00

谢谢你的回复
我的问题类似于lisp,但对于样条曲线,而不是3dpolyline,问题文本是数字
谢谢

Lee Mac 发表于 2022-7-6 15:40:56

啊,我明白了,我只是以为你想修改你的LISP-但我会看看我能做什么

Lee Mac 发表于 2022-7-6 15:47:01

也许是这个?
 

(defun c:3dPol2    (/ pt1 txt zval cmpt)
(if (and (setq pt1 (getpoint "\nSpecify Start Point > "))
      (setq txt (car (entsel "\nPick Text > ")))
      (member (cdr (assoc 0 (entget txt))) '("TEXT" "MTEXT")))
   (progn
   (setvar "cmdecho" 0)
   (setq zval (cdr (assoc 1 (entget txt)))
       cmpt (strcat (rtos (car pt1)) "," (rtos (cadr pt1)) "," zval))
   (command "_3dpoly" cmpt)
   (while (> (getvar "cmdactive") 0)
   (if (and (setq pt1 (getpoint pt1 "\nConstruct Other Points > "))
      (setq txt (car (entsel "\nPick Text > ")))
      (member (cdr (assoc 0 (entget txt))) '("TEXT" "MTEXT")))
   (progn
       (setq zval (cdr (assoc 1 (entget txt)))
         cmpt (strcat (rtos (car pt1)) "," (rtos (cadr pt1)) "," zval))
       (command cmpt))
   (command)))
   (command "_.pedit" (entlast) "S" ""))
   (princ "\n<!> No Point/Text Selected <!> "))
(setvar "cmdecho" 1)
(princ))

motee-z 发表于 2022-7-6 15:52:28

我的目标是绘制通过选定点的样条曲线,但这些点没有z值,因此在拾取每个点时必须插入z值
我从你的lisp dos中得到的线,没有通过所选的点并保持3dpoline
谢谢你

Lee Mac 发表于 2022-7-6 15:58:19

它为我生成了一条样条。。
 
看这里
样条曲线。拉链

motee-z 发表于 2022-7-6 16:04:21

好的,它是样条曲线,但样条曲线不通过选定的点
这个问题能解决吗

Lee Mac 发表于 2022-7-6 16:09:07

我以为标准样条只能是二维的,也许我错了
页: [1] 2
查看完整版本: 绘制样条并求z