bijoyvm 发表于 2022-7-6 08:56:10

如何创建注释性Bl

你好
请告诉我如何使用entmake函数创建注释性块。
 
(defun c:crb ( )
   (if (not (tblsearch "BLOCK" "CRBLK"))
       (progn
         (if (not (tblsearch "STYLE" "Gen-Text"))
               (entmake
                   (list
                     (cons 0 "STYLE")
                     (cons 100 "AcDbSymbolTableRecord")
                     (cons 100 "AcDbTextStyleTableRecord")
                     (cons 2 "Gen-Text")
                     (cons 70 0)
                     (cons 40 2.5)
                     (cons 3 "Arial.ttf")
                   )
               )
         )
         (entmake
               (list
                   (cons 0 "BLOCK")
                   (cons 8 "0")
                   (cons 370 0)
                   (cons 2 "CRBLK")
                   (cons 70 2)
                   (list 10 0.0 0.0 0.0)
               )
         )
         (entmake
               (list
                   (cons 0 "CIRCLE")
                   (cons 8 "0")
                   (cons 370 0)
                   (list 10 0.0 0.0 0.0)
                   (cons 40 1.25)
               )
         )
         (entmake
               (list
                   (cons 0 "ATTDEF")
                   (cons 8 "0")
                   (cons 370 0)
                   (cons 7 "Gen-Text")
                   (list 10 3.0 0.0 0.0)
                   (list 11 3.0 0.0 0.0)
                   (cons 40 2.5)
                   (cons 1 "00")
                   (cons 3 "Number")
                   (cons 2 "NO")
                   (cons 70 0)
                   (cons 72 0)
                   (cons 74 2)
               )
         )
         (entmake
               (list
                   (cons 0 "ENDBLK")
                   (cons 8 "0")
               )
         )
         (
               (lambda ( lst )
                   (regapp "ACAD")
                   (entmod
                     (append (subst (cons 70 1) (assoc 70 lst) lst)
                           (list
                              (list -3
                                  (list "ACAD"
                                    (cons 1000 "DesignCenter Data")
                                    (cons 1002 "{")
                                    (cons 1070 1)
                                    (cons 1070 1)
                                    (cons 1002 "}")
                                  )
                              )
                        )
                     )
                   )
               )
               (entget (cdr (assoc 330 (entget (tblobjname "BLOCK" "CRBLK")))))
         )
       )
   )
   (princ)
)

David Bethel 发表于 2022-7-6 09:05:31

首先创建块的过程中,有一半是正确的。另一半正在创建插入实体:

(entmake (list (cons 0 "INSERT")
            (cons 8 "0")
            (cons 66 1)
            (cons 2 "CP")
            (cons 10 (list 0 0 0))
            (cons 41 1)
            (cons 42 1)
            (cons 50 0)
            (cons 43 1)
            (cons 70 0)
            (cons 71 0)
            (cons 44 0)
            (cons 45 0)
            (cons 210 (list 0 0 1))
            (cons 62 256)
            (cons 39 0)
            (cons 6 "BYLAYER")))
(entmake (list (cons 0 "ATTRIB")
            (cons 8 "0")
            (cons 10 (list 0 0 0))
            (cons 40 1)
            (cons 1 "TESTING 123")
            (cons 2 "TAGNAME")
            (cons 70 0)
            (cons 73 0)
            (cons 50 0)
            (cons 41 1)
            (cons 51 0)
            (cons 7 "STANDARD")
            (cons 71 0)
            (cons 72 0)
            (cons 11 (list 0 0 0))
            (cons 210 (list 0 0 1))
            (cons 74 0)
            (cons 62 256)
            (cons 39 0)
            (cons 6 "BYLAYER")))
(entmake (list (cons 0 "SEQEND")
            (cons 8 "0")))

 
扩展数据可以包含在插入头定义中,也可以随后附加-大卫

Lee Mac 发表于 2022-7-6 09:08:14

 
扩展数据用于更改块定义的单元,请参阅:
 
http://www.cadtutor.net/forum/showthread.php?62333-如何在创建Lisp时禁用属性quot LOCK POSITION quot&p=425282&viewfull=1#post425282

bijoyvm 发表于 2022-7-6 09:15:47

你好
李先生帮我创建了上面的块,现在我需要带注释的块,我不知道我需要更改哪些代码。我尝试了插入,但仍然没有创建注释块。
 
谢谢和问候
比乔伊

Lee Mac 发表于 2022-7-6 09:19:50

不幸的是,我没有使用注释性对象的经验。

bijoyvm 发表于 2022-7-6 09:22:32

:(
 
李,注释是AutoCAD中功能最强大的工具之一,你应该试试。。如果你对注释有了一个想法,那么你就不会在没有注释的情况下绘制图形。请检查此链接可能会对您有所帮助http://cadlispandtips.blogspot.com/2010/11/annotation-simple-introduction.html

pBe 发表于 2022-7-6 09:26:29

 
即注释性对象。

bijoyvm 发表于 2022-7-6 09:33:20

你好,pBe,
你知道如何用lisp创建注释性块吗?如果有人知道,请帮助我。。。

pBe 发表于 2022-7-6 09:37:42

Lisp程序,不是真的。但这就像使用命令“Block”并将其转换为注释性一样简单。所以我真的不需要为此编写lisp代码。如果我们足够努力的话,我想我们会找到它的。
 

Lee Mac 发表于 2022-7-6 09:41:59

经过一点逆向工程和猜测。。。
 
(defun c:crb ( )

   ;;===============================================;;
   ;; Example by Lee Mac 2011-www.lee-mac.com   ;;
   ;;===============================================;;
   
   (if (not (tblsearch "BLOCK" "CRBLK"))
       (progn
         (if (not (tblsearch "STYLE" "Gen-Text"))
               (entmake
                   (list
                     (cons 0 "STYLE")
                     (cons 100 "AcDbSymbolTableRecord")
                     (cons 100 "AcDbTextStyleTableRecord")
                     (cons 2 "Gen-Text")
                     (cons 70 0)
                     (cons 40 2.5)
                     (cons 3 "Arial.ttf")
                   )
               )
         )
         (entmake
               (list
                   (cons 0 "BLOCK")
                   (cons 8 "0")
                   (cons 370 0)
                   (cons 2 "CRBLK")
                   (cons 70 2)
                   (list 10 0.0 0.0 0.0)
               )
         )
         (entmake
               (list
                   (cons 0 "CIRCLE")
                   (cons 8 "0")
                   (cons 370 0)
                   (list 10 0.0 0.0 0.0)
                   (cons 40 1.25)
               )
         )
         (entmake
               (list
                   (cons 0 "ATTDEF")
                   (cons 8 "0")
                   (cons 370 0)
                   (cons 7 "Gen-Text")
                   (list 10 3.0 0.0 0.0)
                   (list 11 3.0 0.0 0.0)
                   (cons 40 2.5)
                   (cons 1 "00")
                   (cons 3 "Number")
                   (cons 2 "NO")
                   (cons 70 0)
                   (cons 72 0)
                   (cons 74 2)
               )
         )
         (entmake
               (list
                   (cons 0 "ENDBLK")
                   (cons 8 "0")
               )
         )
         (
               (lambda ( lst )
                   (regapp "ACAD")
                   (regapp "AcadAnnotative")
                   (entmod
                     (append (subst (cons 70 1) (assoc 70 lst) lst)
                           (list
                              (list -3
                                  (list "ACAD"
                                    (cons 1000 "DesignCenter Data")
                                    (cons 1002 "{")
                                    (cons 1070 1)
                                    (cons 1070 1)
                                    (cons 1002 "}")
                                  )
                                  (list "AcadAnnotative"
                                    (cons 1000 "AnnotativeData")
                                    (cons 1002 "{")
                                    (cons 1070 1)
                                    (cons 1070 1)
                                    (cons 1002 "}")
                                  )
                              )
                        )
                     )
                   )
               )
               (entget (cdr (assoc 330 (entget (tblobjname "BLOCK" "CRBLK")))))
         )
       )
   )
   (princ)
)
页: [1] 2
查看完整版本: 如何创建注释性Bl