xyao99 发表于 2022-7-5 16:51:04

在中使用Arraypath需要帮助

试着用lisp语言完成一个简单的任务:
 
 
1、从a到B划一条线
2、在a处画一个小圆圈
3、使用命令Arraypath
4、选择圆
5、选择直线作为曲线
6、方法->分割
7、项目->5(可以是任何数字)
 
 
我在autocad中这样做,无论如何绘制直线,无论圆是放置在A还是B,它都会一直工作
 
 
当我使用以下lisp时,它只起作用。从左到右或从上到下绘制直线,并将圆放置在:
 
 
(定义C:InsDistributedBar()
(命令“.LINE”pause pause“”)
(setq lastline(entlast))
(命令“.circle”pause pause“”)
(setq lastbar(entlast))
(命令.arraypath“lastbar”“lastline 5”D“”)
)
 
 
当我用以下行替换arraypath以模拟命令arraypath的直接输入时:
(命令“.arraypath”lastbar“”lastline“M”“D”“I”5”)
 
 
代码根本不起作用。执行回音为:
 
 
命令:。阵列路径
选择对象:找到1个
 
选择对象:
类型=路径关联=是
 
选择路径曲线:
输入沿路径的项数或[方向/表达式]:M需要1到32767之间的整数,或option关键字。
输入沿路径的项数或[方向/表达式]:D需要1到32767之间的整数,或option关键字。
输入沿路径的项数或[方向/表达式]:我需要一个介于1和32767之间的整数,或option关键字。
输入沿路径的项数或[方向/表达式]:5
指定沿路径或的项目之间的距离:
选择夹点以编辑阵列或[关联/方法/基点/切线方向/项目/行/级别/对齐项目/Z方向/退出]:nil
 
 
我对lisp不太了解。我不知道怎么了。
 
 
请帮忙。
 
 
谢谢
 
 
小平

satishrajdev 发表于 2022-7-5 16:58:22

试试这个
 
(DEFUN C:InsDistributedBar ()
(command ".LINE" pause pause "")
(setq lastline (entlast))
(command ".circle" pause pause)
(setq lastbar (entlast))
(command "arraypath" lastbar "" lastline 5 "D" "M" "D" "")
(princ)
)
 
 
(command "arraypath" lastbar "" lastline 5 "D" "M" "D" "")
做与您尝试的相同的事情,但变化不大。。。
 
如果您可以在代码本身中提供Divide选项,那么为什么要尝试方法->Divide

xyao99 发表于 2022-7-5 17:03:36

我尝试的原因
 
 
(命令“.arraypath”lastbar“”lastline“M”“D”“I”5”)
 
 
是模仿在autocad中直接使用Arraypath的方式。
 
 
我试过你的密码
 
 
(命令“arraypath”lastbar“lastline 5”D“M”D“”)
 
 
它仍然不起作用。试着用不同的方式画这条线,有时这5个圆可以放在相反的方向上。
 
 
谢谢
 
 
小平

satishrajdev 发表于 2022-7-5 17:12:12

哦,对不起,没有检查
 
现在试试这个:
(defun c:test (/ a b l c)
(if
   (setq a (getpoint "\nSpecify start point : ")
b (getpoint a "\nSpecify end point : ")
   )
    (progn
      (command ".line" a b "")
      (setq l (entlast))
      (command ".circle" a pause)
      (setq c (entlast))
      (command ".arraypath" c "" l "O" a b "E" 5 "D" "X")
    )
)
(princ)
)

xyao99 发表于 2022-7-5 17:15:24

Trie你的代码,工作完美!
 
 
谢谢!
 
 
虽然我不明白“O”选项来自哪里。如何在lisp中使用命令,从哪里可以获取文档?(语法、参数……)。
 
 
小平

satishrajdev 发表于 2022-7-5 17:23:53

 
很高兴来到这里
 
 
“O”代表方向。。。。你可以在命令行中看到这一点
 
 
有一些网站可以让你学习lisp。。。
例如
http://www.afralisp.net/index.php
http://lee-mac.com/index.html

xyao99 发表于 2022-7-5 17:26:50

我检查了autocad 2015命令行,没有看到方向选项。我还检查了arraypath文档,也没有看到这个选项。
 
 
http://knowledge.autodesk.com/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-Core/files/GUID-D36C46CD-4E17-4A16-A387-C0B158EA5A9E-htm.html
 
 
你能告诉我你从哪里得到这个选项吗?
 
 
谢谢
 
 
小平

satishrajdev 发表于 2022-7-5 17:31:51

这个例子摘自你的第一篇文章。。。查看红色突出显示
Command: .arraypath
Select objects: 1 found

Select objects:
Type = Path Associative = Yes

Select path curve:
Enter number of items along path or [Orientation/Expression] <Orientation>: M Requires an integer between 1 an 32767, or option keyword.

xyao99 发表于 2022-7-5 17:35:14

这是代码中执行的arraypath的回声。如果直接在autocad命令行中使用arraypath命令,则不会获得该方向选项。
 
 
当您直接使用该命令时,提供/需要的选项和参数似乎不同于在lisp中执行的选项和参数(命令“.”…)。这没有道理。这些记录在哪里?

satishrajdev 发表于 2022-7-5 17:41:26

你完全正确。我注意到了。我也是第一次遇到这样的事情。通常,命令以与autocad中的手动和自动操作相同的方式执行。我认为不会有任何关于这个的纪录片。如果可以的话,我很感兴趣。在这种情况下,经验n实践就出现了。
页: [1] 2
查看完整版本: 在中使用Arraypath需要帮助