这样生成的块的属性在2002中只能用ddatte编辑,双击时提示没有属性?

- (defun $yb_mkunblk (p1 p2 str1 str2 $angle str
- / lst0 lst1 blkn lx pt3
- pa2 pa3 $yb_mkattrib
- )
- (defun drop (lst item)
- (append (reverse (cdr (member item (reverse lst))))
- (cdr (member item lst))
- )
- )
- ;;生成Attdef 或 attrib
- (defun $yb_mkattrib (p str $angle code1 code2 tf)
- (list (cons 0
- (if tf
- "ATTDEF"
- "ATTRIB"
- )
- )
- '(100 . "AcDbEntity")
- '(67 . 0) ;模型空间
- '(8 . "0") ;图层
- '(100 . "AcDbText")
- (cons 10 p) ;文字起点
- (cons 40 h) ;字高
- (cons 1 str) ;缺省值
- (CONS 100
- (IF TF
- "AcDbAttributeDefinition"
- "AcDbAttribute"
- )
- )
- (cons 2 (substr str 1 1))
- '(70 . 8)
- '(73 . 0)
- (cons 50 $angle) ;旋转角
- '(41 . 0.75) ;宽度因子
- '(51 . 0.0) ;倾角
- '(7 . "z") ;字体样式
- '(71 . 0) ;文字生成标志
- (cons 72 code1)
- (cons 74 code2)
- (cons 11
- (if (/= (+ code1 code2) 0)
- p
- '(0.0 0.0 0.0)
- )
- ) ;对齐点
- '(210 0.0 0.0 1.0) ;拉伸方向
- (if tf
- (cons 3 (substr str 1 1))
- )
- )
- )
- (entmake
- (list '(0 . "block") '(2 . "*U") '(70 . 1) (cons 10 p1))
- )
- (entmake (list '(0 . "LWPOLYLINE")
- '(100 . "AcDbEntity")
- '(8 . "0")
- '(100 . "AcDbPolyline")
- '(90 . 3)
- (cons 10 p1)
- (cons 10 p2)
- (cons 10 pt3)
- '(210 0.0 0.0 1.0)
- )
- )
- (setq blkn (entmake '((0 . "ENDBLK"))))
- (setq lst0 (list '(0 . "INSERT")
- '(100 . "AcDbEntity")
- (cons 8 (getvar "clayer"))
- '(100 . "AcDbBlockReference")
- '(66 . 1)
- (cons 10 p1)
- '(41 . 1.0)
- '(42 . 1.0)
- '(43 . 1.0)
- '(50 . 0.0)
- '(70 . 0)
- '(71 . 0)
- '(44 . 0.0)
- '(45 . 0.0)
- '(210 0.0 0.0 1.0)
- )
- )
- (setq lst1 (append lst0 (list (cons 2 blkn))))
- (entmake lst1)
- ;;引用属性
- (entmake (drop ($yb_mkattrib pa2 px $angle 0 0 nil) nil))
- )
|