entmake标注关联-直线起点关联
标注关联有的时候比较方便,最近研究了下,精力有限,基本了解了标注关联原理。先创建词典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)
)
E大, 这么晚还是操劳, 辛苦了 E大你好,你这个好像有问题,画了好几段,只标注关联了一段
页:
[1]