tasty geezer 发表于 2022-7-6 10:05:49

回到CAD游戏中

经过一段时间的外出和不使用CAD的一段时间,我已经变得非常生锈。。。我希望我能从你们这些大师那里得到一些帮助。。。
 
我上次使用的AutoCad平台是2005年。我现在使用2010。
 
我有一份清单。我保留了我使用最多的lsp例程。我在2010年试过加载它们,但它们不起作用。我现在只从其中的两个开始。
 
第一个是L8。lsp这个例程简单地将所有不是我的图层更改为8色。代码是这样的:
 
(定义C:L8()
(命令“-vbarun”“L8”)
)
 
它丢失了一堆信息,对吗?
 
我的下一个是mpl2。lsp该例程插入了一个块,其中包含我所有的符号/层等,无论模型空间比例设置为什么。然后,我会分解块,开始布置我的图纸。代码如下所示:
 
(定义C:mpl2()
(命令“-vbarun”“mpl2”)
)
 
再一次,我相信我错过了很多信息,让它正常工作。
 
谢谢

The Buzzard 发表于 2022-7-6 10:10:53

如果没有可从Autodesk下载的附加模块,2010和2011软件包将无法运行VBA应用程序。
 
由于Microsoft不再支持VBA,Autodesk将来将不再支持VBA。您可以从Autodesk for AutoCAD 2010下载以运行VBA应用程序。建议您将其转换为。净额。
 
以下是2010年VBA的下载:http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=15077854&linkID=9240618

rkmcswain 发表于 2022-7-6 10:13:51

这些是用于调用VBA模块的唯一lisp包装。
你需要有。DVB文件可用并在其工作之前加载。如前所述,在vanilla AutoCAD 2010和更高版本中,不包括VBA支持,尽管您可以下载它。
 
我会考虑将代码迁移到。NET或lisp(如果可能),以获得长期支持。

fuccaro 发表于 2022-7-6 10:17:35

根据您的描述,在Lisp中重新创建例程听起来很容易。你有L8的图层列表吗?

tasty geezer 发表于 2022-7-6 10:19:45

fuccaro-Attached是mpl2的模块。lsp将以我的图形设置的比例插入到我的图形中。我的所有层也在块中。然后,我只需分解块并抓取所需的符号。
 
buzzard-在找到这个很棒的论坛之前,我下载了VBA应用程序。转换为的步骤是什么。网
 
rkmcswain-是。DVB模块—当我抓取所有硬盘时,我应该将其保存到外部硬盘中。lsp例程并将其保存以供以后使用。
 
谢谢
ALD_块。图纸

Lee Mac 发表于 2022-7-6 10:21:48

不确定您的意思是将颜色覆盖设置为颜色8还是图层颜色,但这里是一个开始:
 

(defun c:L8 ( / NewCol layers ss )
;; © Lee Mac 2010

(setq NewCol;; New Colour for Objects

(setq layers
   (mapcar 'strcase
    '(

       ;; List your Layers Here:

      "0"
      "Defpoints"

      ;;---------------------;;
   )      
   )
)

(if
   (setq ss
   (ssget "_X"
       (list
         (cons -4 "<NOT")
         (cons 8 (LM:lst->str layers ","))
         (cons -4 "NOT>")
       )
   )
   )
   (
   (lambda ( i / e l )
       (while (setq e (ssname ss (setq i (1+ i))))
         (entupd
         (cdr
             (assoc -1
               (entmod
               (if (assoc 62 (setq l (entget e)))
                   (subst (cons 62 NewCol) (assoc 62 l) l)
                   (append l (list (cons 62 NewCol)))
               )
               )
             )
         )
         )
       )
   )
   -1
   )
   (princ "\n--> No Objects Found on Other Layers <--")
)

(princ)
)

;;-------------------=={ List to String }==-------------------;;
;;                                                            ;;
;;Constructs a string from a list of strings separating   ;;
;;each element by a specified delimiter                     ;;
;;------------------------------------------------------------;;
;;Author: Lee Mac, Copyright © 2010 - www.lee-mac.com       ;;
;;------------------------------------------------------------;;
;;Arguments:                                                ;;
;;lst - a list of strings to process                        ;;
;;del - delimiter by which to separate each list element    ;;
;;------------------------------------------------------------;;
;;Returns:String containing each string in the list       ;;
;;------------------------------------------------------------;;

(defun LM:lst->str ( lst del )
;; © Lee Mac 2010
(if (cdr lst)
   (strcat (car lst) del (LM:lst->str (cdr lst) del))
   (car lst)
)
)


 
我猜了一下比例。。。

rkmcswain 发表于 2022-7-6 10:25:03

我不认为应该是这样的。。。我已经有一段时间没用了

Lee Mac 发表于 2022-7-6 10:29:03

 
明白了,这就是我在看了你的画后得出的结论-我当前的代码是设置颜色覆盖,这显然不理想。。。

tasty geezer 发表于 2022-7-6 10:32:12

李·麦克,
 
我只需要复制文本框中的内容,粘贴到记事本中并另存为。lsp对吗?对不起,我只是想回到这个。。。

Lee Mac 发表于 2022-7-6 10:37:09

 
此处的说明:http://www.cadtutor.net/faq/questions/28/How+do+I+use+an+AutoLISP+routine%3F
页: [1] 2
查看完整版本: 回到CAD游戏中