YZ 发表于 2022-7-6 11:37:52

创建重复C的按钮

我还是个新手。大多数帮助示例似乎都是关于提取数据的,这不是我需要的。
 
我希望做的是设置一个键盘按钮(比如“Q”),自动将所选文本从左对齐改为右对齐。
 
这可能吗?
 
还有,有谁知道一个好的资源来为刚起步的人查看和头脑风暴脚本的可能性吗?

Lee Mac 发表于 2022-7-6 11:44:37

如果你刚刚开始学习,这些可能会有所帮助;
 
启动LISP:
http://www.afralisp.net/
http://www.jefferypsanders.com/autolisptut.html
http://ronleigh.info/autolisp/index.htm
 
 
更高级的LISP教程/帮助:
http://augiru.augi.com/content/library/au07/data/paper/CP311-4.pdf
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/clm/node1.html
 
 
DCL教程:
http://www.jefferypsanders.com/autolisp_DCL.html
http://www.afralisp.net/

YZ 发表于 2022-7-6 11:52:31

谢谢李。
 
我是不是用对正的更改找错了树,还是应该用脚本来处理?

Lee Mac 发表于 2022-7-6 12:02:39

这取决于你所说的“脚本”是什么意思。
 
脚本作为命令列表在AutoCAD中运行,不需要用户输入,也不需要错误处理。
 
可以创建AutoLISP或Visual LISP程序/函数,以便使用特定语法调用它,并执行其中编码的操作。
 
当然,您可以通过AutoLISP/Visual LISP程序实现您的请求,但使用脚本会稍微困难一些。
 

Lee Mac 发表于 2022-7-6 12:06:18

例如,以下是实现目标的两种方法:
 
使用AutoLISP:(可以在此处找到参考)。
 

(defun c:Text2Right_1 (/ i ss ent eLst)

(if (setq i -1 ss (ssget "_:L" '((0 . "TEXT"))))   
   (while (setq ent (ssname ss (setq i (1+ i))))
   (setq eLst (entget ent)
         eLst (subst (cons 11 (cdr (assoc 10 eLst)))
                     (assoc 11 eLst) eLst))
   (entmod (subst (cons 72 2) (assoc 72 eLst) eLst))))

(princ))

 
使用Visual LISP:
 

(defun c:Text2Right_2 (/ ss)
(vl-load-com)

(if (ssget "_:L" '((0 . "TEXT")))
   (progn
   (vlax-for obj (setq ss (vla-get-ActiveSelectionSet
                              (vla-get-ActiveDocument
                              (vlax-get-acad-object))))

       (setq tmp (vla-get-InsertionPoint obj))      
       (vla-put-Alignment obj acAlignmentRight)
       (vla-put-TextAlignmentPoint obj tmp))

   (vla-delete ss)))

(princ))

 
下面是另一个示例,演示了实现相同结果的各种方法。
 
http://www.cadtutor.net/forum/showpost.php?p=296877&postcount=4
 
 
希望这有帮助,
 

alanjt 发表于 2022-7-6 12:13:15

下面是我使用的几个对正宏。它们应该作为一些很好的例子/起点。
http://www.cadtutor.net/forum/showpost.php?p=271443&postcount=20
 
虽然我不建议过度使用命令调用,但lisp宏没有错。这也是一个很好的起点。

Crazy J 发表于 2022-7-6 12:22:13

关于:写LISP代码,你们两个(LeeMac和Alanjt)在开始学习LISP之前使用AutoCAD多久了?您以前是否用其他语言或应用程序编程?我想这是出于提高工作速度、简化重复命令等目的。这与其他软件的编码方式类似吗?回到学校,我可以用PASCAL、FORTRAN、C和Matlab编程。所以我有能力思考程序的各个步骤,但我对实际使用的行话一无所知。
 
这对我来说很有趣。我不知道其他CAD软件是否也以同样的方式工作,但在此之前,我在automotive工作了12年,使用Unigraphics和Catia的设计团队有20-30人,我从未听过他们谈论过定制或编写任何子程序。如果我继续从事这个领域,我认为这是我必须学习的东西。

YZ 发表于 2022-7-6 12:27:14

 
再次感谢李。
 
我用文字脚本作为一个通用术语,我不知道细微的差别。
 
根据你的定义,我似乎需要Lisp程序。
 
事实上,我们大部分时间都是在办公室里运行LT,我会继续努力解决问题。我知道我不能在LT上创建LISP例程,我仍然不确定是否可以插入自定义按钮。
 
我之所以使用“script”这个词,是因为我被告知“Scriptpro”将用于LT。

Pablo Ferral 发表于 2022-7-6 12:34:57

当谈到Autocad中的“脚本”时,大多数人都是指具有文件扩展名的基于文本的文件。SCR’。
 
运行脚本文件将按顺序执行一系列命令,就像在命令行中键入命令一样,但是添加用户输入并不容易——例如,选择要“重新对齐”的文本。
 
然而,对于像重新调整文本这样的简单任务,可以使用Diesal命令宏,该宏将在单击按钮时运行。
 
脚本编写:
http://www.cad-manager.com/archives/8#more-8
 
命令宏:
http://www.ellenfinkelstein.com/AutoCAD_tips_custom_command.html
 
 
(李·麦克很荣幸,他是一个顶尖的Lisp程序的人。他对“脚本”程序的解释绝对正确,我只是不认为这是你的意思。)

Lee Mac 发表于 2022-7-6 12:41:42

 
嗨,CrazyJ,
 
我是一名学生,实际上根本不使用AutoCAD-我在课间休息年曾短暂使用过它,我的一个同事向我介绍了一些写得很糟糕的LISP例程,我看到了其中的潜力,所以我迷上了编写代码。
 
我正在攻读数学学位,所以我也用MatLab写了不少东西,还把C学习到了中级水平。当然,在了解Visual LISP时,VBA并没有太大的延伸,因为只有细微的差别。
 
但是,如果你在这个行业,我绝对建议你尝试一下学习它——即使是基础知识也会加快你的工作速度。在你意识到这一点之前,你将非常精通它(当然,通过练习)。论坛对学习有很大帮助,我仍然不敢相信学习曲线对我来说有多陡峭。。。
 
 
干杯伙计
页: [1]
查看完整版本: 创建重复C的按钮