madonthemike 发表于 2022-7-6 08:23:05

LISP:自定义等级库生成器

大家好,
 
这是我的第一篇文章,也是许多文章中的第一篇。我希望您就以下问题提供建议:
 
我们公司在图纸上使用主规范(基本上是多行电气规范),我们根据项目添加或删除此规范,有时我几乎没有时间手动编辑和重新编号每个规范-由于我有很多项目。
 
因此,基本上我想从主图形中插入文本(或多行文字),并通过lisp例程在新项目中进行操作和重新编号。这可能吗?还是我太野心勃勃了?
 
我想到的一种方法是将主规范加载到excel文件中,并编写vba程序将选定的条目导出到cad(尽管我不知道文本是作为对象还是实际文本导出)。
 
抱歉发了这么长的帖子。我非常感谢你的意见。

Lee Mac 发表于 2022-7-6 08:44:33

如果我正确理解了你的要求,你可能会对CAB的这个项目感兴趣(网站的那部分可能需要会员资格,尽管它很值得——epic论坛)。

madonthemike 发表于 2022-7-6 09:06:45

谢谢CAB的程序是一个很好的起点,我可以很容易地在此基础上构建。

David Bethel 发表于 2022-7-6 09:09:22

有点混乱,但对我来说很有效:
 

(defun c:gnote (/ nl dn vl fl dc ts sp)

(defun remove (expr lst);;;TonyT or VNesterowski
(apply 'append (subst nil (list expr) (mapcar 'list lst))))

;;;SORT A LIST OF NUMBERS
(defun sil (l / m o)
(while l (setq m (apply 'max l)
               o (cons m o)
               l (remove m l)))
o)

(setq nl '((1 . "Standard Note 1")
            (2 . "Standard Note 2")
            (3 . "Standard Note 3")
            (4 . "Standard Note 4")
            (5 . "Standard Note 5")

            (10 . "Option 1 Note 1")
            (11 . "Option 1 Note 2")
            (12 . "Option 1 Note 3")

            (20 . "Option 2 Note 1")
            (21 . "Option 2 Note 2")
            (22 . "Option 2 Note 3")

            (30 . "Option 3 Note 1")
            (31 . "Option 3 Note 2")
            (32 . "Option 3 Note 3")))




(setq vl '(1 2 3 4 5))
(while (progn
            (textpage)
            (foreach a nl
            (prin1 a)
            (princ "\n"))
            (princ "\n")
            (prin1 vl)
            (setq dn (getint "\nDetail Number To Add <Minus To Remove / Enter To Exit>:   ")))
         (cond ((and (minusp dn)
                     (member (abs dn) vl))
                (setq vl (remove (abs dn) vl)))
               ((and (assoc dn nl)
                     (not (member dn vl)))
                (setq vl (cons dn vl))))
         (setq vl (sil vl)))

;;;MAKE THE ITEMIZED LIST
(setq dc 1)
(setq fl nil)
(foreach v vl
   (setq fl (cons (strcat (itoa dc) " . " (cdr (assoc v nl))) fl)
         dc (1+ dc)))

(graphscr)
(setq ts 2.4)
(setvar "CECOLOR" "3")
(setvar "TEXTSIZE" ts)
(command "_.STYLE" "ROMANS" "ROMANS" ts)
(while (> (getvar "CMDACTIVE") 0)
         (command ""))
(setq sp (list 0 0 0))
(foreach a (reverse fl)
      (command "_.TEXT" sp 0 a)
      (setq sp (list (car sp) (- (cadr sp) (* ts 1.5)) 0)))

(prin1))

 
 
-大卫

madonthemike 发表于 2022-7-6 09:24:23

谢谢大卫!如果我的笔记是多行文字,我该如何实现?
页: [1]
查看完整版本: LISP:自定义等级库生成器