marbenorallo 发表于 2022-7-6 09:27:09

协调。

大家好,
我是这个论坛的新手,我想问一下如何
获取光标的x、y、z坐标并打印和
使用LISP将其保存到txt文件。我正在使用autocad 2011。
感谢您的帮助。
 
当做
大理石

alanjt 发表于 2022-7-6 09:34:28

获取点或grread

Lee Mac 发表于 2022-7-6 09:36:34

?
 

(defun c:test ( / fn fo pt )
(if
   (and
   (setq fn (getfiled "" "" "txt" 1))
   (setq fo (open fn "w"))
   )
   (progn
   (while (setq pt (getpoint "\nPick Point: "))
       (write-line (apply 'strcat (mapcar 'strcat (mapcar 'rtos (trans pt 1 0)) '("," "," ""))) fo)
   )
   (close fo) (startapp "notepad" fn)
   )
)
(princ)
)

Nardino 发表于 2022-7-6 09:42:35

李-麦克我对你能以如此快的速度写出这些lisp文件感到惊讶和印象深刻。

Lee Mac 发表于 2022-7-6 09:45:23

我练习得太多了。。。
 
谢谢伙计

marbenorallo 发表于 2022-7-6 09:49:07

嗨,李,
非常感谢您的快速回复,代码正在运行,但如何在LISP代码中插入目录,例如:我想将txt文件保存到:
C: \文档和设置\管理员\我的文档\我的坐标
具有文件名坐标。txt,这样每次我运行LISP程序时,它都不会问我文件名和保存位置。
 
提前感谢,
大理石

MarcoW 发表于 2022-7-6 09:53:16

你好,Marbenorallo,
 
只需添加如下路径:
(defun c:test (/ fn fo pt)
(if
   (and
   (setq fn "C:\\Documents and Settings\\Administrator\\My Documents\\My Coordinates\\Coordinates.txt")
   (setq fo (open fn "w")); (make "w" --> "a" and it will append
   ) ;_and
    (progn
      (while (setq pt (getpoint "\nPick Point: "))
(write-line (apply 'strcat (mapcar 'strcat (mapcar 'rtos (trans pt 1 0)) '("," "," ""))) fo)
      ) ;_while
      (close fo)
      (startapp "notepad" fn)
    ) ;_progn
) ;_if
(princ)
) ;_defun

 
记住“w”,它会使文件“coordinates.txt”在每次使用该程序时自动覆盖。
如果将其更改为“a”,则现有文件将保留,坐标将附加到文件中。
 
@李:希望你不要介意,我不想“踩到你的脚趾”(英语?)
 
请您向我/我们解释一下这一部分:

(apply 'strcat (mapcar 'strcat (mapcar 'rtos (trans pt 1 0)) '("," ","
"")))

 
Trans我只能理解两次“mapcar”和al的组合“,”。。。
我知道你用delimeters将其格式化为字符串,但我需要理解代码。

Lee Mac 发表于 2022-7-6 09:58:22

 
别担心
 
 
当然,这里有一个由内而外计算的表达式的逐步步骤(使用(1.2 1.3 1.4)的示例点):
 
希望这能澄清问题,但如果你需要进一步解释,请告诉我

marbenorallo 发表于 2022-7-6 10:03:30

你好,马可,
你给出的lisp代码正是我想要的。非常感谢你。我还有一个关于坐标的问题。如何获取选定直线、多段线、圆弧和块的坐标,并将坐标打印到txt文件中。
 
当做
大理石

Lee Mac 发表于 2022-7-6 10:06:36

嗨,Marbs,
 
在我的网站上搜索我的“Point Manager”程序,它可以(大部分)满足你的需求。
 
页: [1] 2
查看完整版本: 协调。