Agent 31 发表于 2022-7-6 10:14:39

插入来自另一fil的块

嘿,大家好,我有一个简短的问题。如果已经有人问过,我很抱歉,但我自己找不到。我已经搜索了其他地方,但如果帖子没有专门针对你的问题,那就很难了。
 
我的问题是,我们公司有一个LISP程序。从用户那里获得所有信息后,它将以特定的数量在特定的排列中插入一个块。像这样,插入布拉布拉布拉3次向下1英寸的间隔。一切正常,但问题是块必须在图形中,否则例程将失败。如果在块位于图形中时运行它,则运行良好,没有问题。帮助我已经寻找了不同的方法让它插入块,但似乎没有任何组合工作。
 
这是插入积木的线,有什么想法吗?
 
(command "insert" "terminal" (polar #pt1 1.570796327 0.125) "" "" "")

asos2000 发表于 2022-7-6 10:18:27

据我所知
您有2种解决方案
-创建块本身(作为lisp中的子例程)
-插入块,然后使用lisp
*添加代码以插入块
*使用设计中心
*创建bottun并使用宏

Agent 31 发表于 2022-7-6 10:24:17

谢谢你的回复,我感谢你的努力。关于你的信息,我有几个简短的问题。
 
如何使用LISP插入块?您是否能够插入块,使用lisp的其余部分,然后删除插入的第一个块,这样您就没有多余的块了。我想这可能是一种选择。
 
至于其余部分,问题是如果图形中没有块,它将无法工作。然而,我希望避免这种情况,并且能够在全新的图形中运行LISP例程,而无需打开现有文件。这有意义吗?
 
我确实喜欢插入块,运行lisp,然后删除块的选项。有没有办法实现自动化?

asos2000 发表于 2022-7-6 10:25:24

我可以问一下吗
为什么使用lisp插入块
你可以使用宏来实现这一点,它更容易、更好(至少对我来说)
这是我使用的宏
^C^Cinsunits;4;-insert;C:/Blocks/Block.dwg;\\;0;explode;last;ddedit;last;
insunits;4       to be sure the unites in both drawings is the same
-insert;             using insert command
C:/Blocks/Block.dwg;\\;0;       The path and file
explode;last;    explode the origen file to be able to insert again
ddedit;last;       edit in case of the block has an attribute

Agent 31 发表于 2022-7-6 10:30:07

在我工作的公司,我们生产电气设备。我们绘制的图纸中有三分之二涉及电路图和示意图。其中很大一部分是以接线端子的形式存在的。我们有一组8种不同的LISP例程,它们一起很好地发挥作用。第一个是创建一组这样的终端,这样我们就可以工作了。
 
终端几乎是一组盒子,每个盒子包含一个数字。在每一侧放置一个带阴影的圆形,作为连接点,包含我们使用的其余例程的扩展数据信息。
 
示例:您需要2个端子。它创建了2个长方体,1和2,并在每个长方体的侧面放置了4个圆形块。
 
问题:仅当图形中已有块时,才会运行此操作。我需要它将图形作为一个块插入到一个独立的图形中,而不需要以前将它放在那里。
 
通常我们要做的是拿一张旧画,删除我们不需要的东西,然后从那里开始工作。但问题是,如果你想从头开始创建一个全新的图表,你不能。我正在试图找出如何解决这个问题。这有意义吗?

David Bethel 发表于 2022-7-6 10:33:30

 
 
如果块是搜索路径中的dwg文件,则可以这样定义块表:

(command "insert" "terminal")
(command)

 
 
如果块仅在另一个图形中定义,则替换为主dwg文件名-大卫

David Bethel 发表于 2022-7-6 10:35:46

 
 
现在这没有意义了。。。。。。。

alanjt 发表于 2022-7-6 10:39:33

或者:
(command "insert" "terminal" nil)

Lee Mac 发表于 2022-7-6 10:40:10

这是我用来“强制”块定义的:
 

;;---------------=={ Force Block Definition }==---------------;;
;;                                                            ;;
;;Ensures, if possible, that a block definition is present;;
;;in a drawing.                                             ;;
;;------------------------------------------------------------;;
;;Author: Lee McDonnell, June 2010                        ;;
;;                                                            ;;
;;Copyright © 2010 by Lee McDonnell, All Rights Reserved.   ;;
;;Contact: Lee Mac @ TheSwamp.org, CADTutor.net             ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;block - block name or filename                            ;;
;;------------------------------------------------------------;;
;;Returns:Block name, else nil                            ;;
;;------------------------------------------------------------;;

(defun LM:ForceBlockDefinition ( block / path ext base )
;; © Lee Mac 2010
(setq path(vl-filename-directory block)
       ext   (vl-filename-extension block)
       base(vl-filename-base block))

(or ext (setq ext ".dwg"))
(or (eq "" path) (setq path (strcat path "\\")))

(cond
   ( (tblsearch "BLOCK" base) base )

   ( (setq block (findfile (strcat path base ext)))

   (command "_.-insert" block) (command) base
   )
)
)可以提供块名、带扩展名的块名或完整的块文件名。

Agent 31 发表于 2022-7-6 10:43:22

如果有人想要完整的Lisp程序,我很乐意发送。有3个文件,它们都保存在AutoCAD的支持目录中。这个lsp。dwg和。dcl。。。。
 
我只是想知道,大卫,有什么没有意义?我包括了一个LISP例程创建的图像,以及我们使用它们的范围的缩小版本。黄点是我试图作为独立块插入的块,而不是已经在图形中的块。
 
重点是,我不能让它插入黄点。虽然这很容易纠正,只需将其中一个复制到绘图中,运行lisp,然后删除它,但我正在寻找一种以自动方式执行此操作的方法。这是为了防止错误,因此如果不知道系统正在使用该程序的人,他们将不必担心细节,他们只需“点击它,然后忘记它”。
 
 
 

 
页: [1] 2
查看完整版本: 插入来自另一fil的块