kapat 发表于 2022-7-6 07:16:48

将autocad中的信息获取到

Soooo。。。。。我一直在使用getpoints和“cond”
 
但我似乎无法做到这一点,否则真的很原始。我找到的两个论坛是:
 
酒店雇员和饭馆雇员
 
在这里
 
我不确定链接到另一组论坛是否是坏事,但为了研究起见,我认为这些都应该链接起来。
 
我认为大多数人来到这里的主要问题是,他们可以在谷歌上找到90%的搜索内容,但很难将所有内容个性化到他们想要的格式。
 
我也受到同样的折磨。我可以复制这些人的代码,让它半途而废,但这并不能真正帮助我,因为我必须回去格式化它。我发誓我在谷歌上搜索并尝试40或50种不同的编码方式,然后再找你们。我从你们那里得到的免费编码的负罪感真的在增加。我希望当我问这些问题的时候,我不会显得太贪得无厌,你们真的是最好的。
 
现在,谈谈我所拥有的,以及我要追求的。
 
基本上,我想选择一个点,命名该点,并将其放入带有格式的记事本中。
 
例如:
 
(命令“whatever”)
 
提示输入文件名(位置对我来说无关紧要,可以是“c:\”或“用户\桌面”
 
(拾取点)
 
宣读内容包括:
 
PT1 111.1111 222.2222 333.3333
PT2 444.4444 555.5555 666.6666
 
以此类推,使“pt#”随着所有点的增加而增加。
此外,棘手的部分是我需要在数字之间使用“5空格”,而不使用“\t”。这正是我想用的,但这不是我今天的饼干崩塌的方式。
 
我要感谢任何一个走到这一步还没有离开的人。现在编码时间:
 

(defun c:P2FILE(/ fname file text pt p2)

(setq fname (getkword "\nenter filename"))

(setq file (open fname".txt" "w"))

(setq pt1 (getpoint "\nPICK POINT"))

(setq x (rtos (car pt1)))
(setq y (rtos (cadr pt1)))
(setq z (rtos (caddr Pt1)))

(setq text (strcat "PT1   "x"   "y"   "z))

(write-line text fname)

(close file)
)
 
现在我知道事情不对,但不知道如何解决:
 
“getkword”我确信是错误的命令,因为放入每个变量是一个荒谬的概念。
 
我的“strcat”没有我选的分数,但我甚至不知道如何开始做那个“cond”
 
提前感谢您的帮助!

JohnM 发表于 2022-7-6 07:21:51

你能解释更多吗?
记事本文件将用于什么?
为什么需要5个空间?

kapat 发表于 2022-7-6 07:24:29

我已经更新了代码,虽然我直到tommarow才开始工作,但我已经非常接近了。但这是一个名为“netrology”的项目,用于土木工程等领域。这就是设计文件的设置方式。

BIGAL 发表于 2022-7-6 07:28:44

您需要使用rtos来增加pt数量,还有一些其他错误,我已经更改了这些错误
 
(defun c:P2FILE(/ fname file text pt1 )
(setq fname (getstring "\nenter filename"))
(setq file (open fname "w"))
(setq J (getint "\nEnter start number"))

(while (setq pt1 (getpoint "\nPICK POINT enter to EXIT"))
(setq x (rtos (car pt1) 2 3 ))
(setq y (rtos (cadr pt1) 2 3 ))
(setq z (rtos (caddr Pt1) 2 3 ))
;I would write line for clarity
(setq text (strcat "PT" (rtos J2 0) "   " x "   " y "   " z))
(write-line text fname)
(setq J (+ J 1))
)
(close fname)
)

kapat 发表于 2022-7-6 07:32:11

嗯,它似乎不起作用。
 
以下是我所拥有的:
 
(defun c:p2f (/ p x y z x1 y1 z1 ptcoord textloc cs_from cs_to file text)

(setq j (getint "\nEnter start number"))

(while ;start while
(setq p (getpoint "CHOOSE YOUR POINT"))

(setq cs_from 1)
(setq cs_to 0)
(setq p1 (trans p cs_from cs_to 0))

(setq textloc (getpoint p "PLACE TEXT"))

(setq x (rtos (car p1) 2 3))
(setq y (rtos (cadr p1 2 3)))
(setq z (rtos (caddr P1) 2 3))

(setq ptcoord (strcat "pt"(rtos j)"   "x"   "y"   "z))

(command "_leader" p textloc "" ptcoord "")

(setq text (strcat "pt"(rtos j)"   "x"   "y"   "z))
(setq file (open "c:\design.txt" "w"))

(command file)
(write-line text)
(close file)

(setq j (+ j1))

(princ)
) ;end while
)

 
谢谢你的
(rtos (+ j 1))
 
这是给你的东西编号的一个很酷的技巧。
 
但仍然不起作用

MSasu 发表于 2022-7-6 07:34:29

首先,请注意使用WHILE-on你的摘录会在每个周期覆盖输出文件。
我对您的代码进行了一些更正,以正确地输出到文件:
(setq text (strcat "pt   " x "   " y "   " z))
(setq file (open "c:\\design.txt" "w"))

(command file)
(write-line text file)
(close file)

kapat 发表于 2022-7-6 07:38:59

(defun c:p2f (/ p x y z j ptcoord textloc cs_from cs_to file text)

(setq j (getint "\nEnter start number"))

(while ;start while
(setq p (getpoint "CHOOSE YOUR POINT"))

(setq cs_from 1)
(setq cs_to 0)
(setq p1 (trans p cs_from cs_to 0))

(setq textloc (getpoint p "PLACE TEXT"))

(setq x (rtos (car p1)))
(setq y (rtos (cadr p1)))
(setq z (rtos (caddr P1)))

(setq ptcoord (strcat "pt"(rtos j)"   "x"   "y"   "z))

(command "_leader" p textloc "" ptcoord "")

(setq text (strcat "pt"(rtos j)"   "x"   "y"   "z))
(setq file (open "c:\\design.txt" "w"))

(write-line text file)
(close file)

(setq j (+ j 1))

(princ)
) ;end while
)

 
你说得对,“while”仍然很疯狂。我希望它从“input#”开始,然后继续添加。如果我想停下来,做点别的,然后重新开始,我可以从我留下的任何数字开始。

kapat 发表于 2022-7-6 07:40:00

顺便说一句,我知道“ptcoord”和“text”不需要不同。我就是这样写的,所以我更容易阅读。

jammie 发表于 2022-7-6 07:43:24

我认为你正在接近你的代码,只是一个观察
 
(setq file (open "c:\\design.txt" "w"))
 
应该是
 
(setq file (open "c:\\design.txt" "a"))
 
如果使用“w”打开文件,它会一直覆盖该文件。使用“a”打开允许您添加到文件

kapat 发表于 2022-7-6 07:46:57

我做到了!
 
谢谢你们的帮助
 
完成代码:
 

(defun c:p2f (/ p x y z j ptcoord textloc cs_from cs_to file text filename)


(setq filename (strcat "c:\\"(getstring "\nEnter File Name")".txt"))
(setq j (getint "\nEnter Start Number"))



(while ;start while
(setq p (getpoint "Pick Point"))

(setq cs_from 1)
(setq cs_to 0)
(setq p1 (trans p cs_from cs_to 0))

(setq textloc (getpoint p "PLACE TEXT"))

(setq x (rtos (car p1)))
(setq y (rtos (cadr p1)))
(setq z (rtos (caddr P1)))

(setq ptcoord (strcat "pt"(rtos j 2 0)"   "x"   "y"   "z))

(command "_leader" p textloc "" ptcoord "")

(setq file (open filename "a"))

(write-line ptcoord file)
(close file)

(setq j (+ j 1))

(princ)
) ;end while
)

 
谢谢JAMMIE!
谢谢MSasu!
还有BIGAL!
页: [1] 2
查看完整版本: 将autocad中的信息获取到