标注关联有的时候比较方便,最近研究了下,精力有限,基本了解了标注关联原理。
先创建词典DICTIONARY对象,再创建关联非实体对象DIMASSOC,
再修改DICTIONARY的组码360,更新标注DIMENSION对象的关联反应器组码,更新直线对象的关联反应器组码。
理论上其他应该类似。
以下是直线标注关联测试代码。
 - (defun c:tt(/ dic_list dim1 dim_assoc dim_dic dim_list l1 l1_list l2 l2_list p1 p2 p3 p4 pt pt1 pt2)
- (setq p1(getpoint "\n第1点:")
- p2(getpoint p1 "\n第2点:")
- p3(getpoint "\n第3点:")
- p4(getpoint p3 "\n第4点:")
- )
- (setq pt1 p1
- pt2 p3
- pt(polar pt2(+ (angle pt1 pt2) (* pi 1.5)) 1 )
- )
- (setq l1(entmakex(list '(0 . "line")(cons 10 p1)(cons 11 p2))))
- (setq l2(entmakex(list '(0 . "line")(cons 10 p3)(cons 11 p4))))
- (setq dim1(entmakex (list '(0 . "DIMENSION")
- '(100 . "AcDbEntity")
- '(100 . "AcDbDimension")
- (cons 10 pt)
- '(70 . 32)
- '(1 . "")
- '(100 . "AcDbAlignedDimension")
- (cons 13 pt1)
- (cons 14 pt2)
- '(50 . 1.5708)
- '(100 . "AcDbRotatedDimension")
- )
- )
- )
- (setq dim_dic(entmakex (list '(0 . "DICTIONARY")
- '(100 . "AcDbDictionary")
- '(280 . 1)
- '(281 . 1)
- )
- ))
- (setq dim_assoc(entmakex (list '(0 . "DIMASSOC")
- '(102 . "{ACAD_REACTORS")
- (cons 330 dim_dic)
- '(102 . "}")
- (cons 330 dim_dic)
- '(100 . "AcDbDimAssoc")
- (cons 330 dim1)
- '(90 . 3) '(70 . 0) '(71 . 0)
- '(1 . "AcDbOsnapPointRef")
- '(72 . 13)
- (cons 331 l1)
- '(73 . 2) '(91 . 0) '(40 . 0.0) '(10 0.0 0.0 2.0e+050) '(75 . 0)
- '(1 . "AcDbOsnapPointRef")
- '(72 . 13)
- (cons 331 l2)
- '(73 . 2) '(91 . 0)
- '(40 . 0.0)
- '(10 0.0 0.0 2.0e+050)
- '(75 . 0))
- )
- )
- (setq dic_list(entget dim_dic)
- dic_list(append dic_list (list '(3 . "ACAD_DIMASSOC")
- (cons 360 dim_assoc))))
- (entmod dic_list)
- (setq dim_list(entget dim1)
- dim_list(append (list(car dim_list)(cadr dim_list)(cadddr dim_list))
- (list '(102 . "{ACAD_XDICTIONARY")
- (cons 360 dim_dic)
- '(102 . "}")
- '(102 . "{ACAD_REACTORS")
- (cons 330 dim_assoc)
- '(102 . "}")
- (caddr dim_list)
- )
- (cddddr dim_list)
- )
- )
- (entmod dim_list)
- (setq l1_list(entget l1)
- l1_list(append (list(car l1_list)(cadr l1_list)(cadddr l1_list))
- (list '(102 . "{ACAD_REACTORS")
- (cons 330 dim_assoc)
- '(102 . "}")
- (caddr l1_list)
- )
- (cddddr l1_list)
- )
- )
- (setq l2_list(entget l2)
- l2_list(append (list(car l2_list)(cadr l2_list)(cadddr l2_list))
- (list '(102 . "{ACAD_REACTORS")
- (cons 330 dim_assoc)
- '(102 . "}")
- (caddr l2_list)
- )
- (cddddr l2_list)
- )
- )
- (entmod l1_list)
- (entmod l2_list)
- (princ)
- )
|