可以使用扩展数据将数据存储在块或实体内。以下是一些功能:
- (defun Add_XData(
- Ent ; - Entity Ename
- App ; - Application name
- dList ; - XData list (list(cons group data)...)
- )
- (regapp App)
- (entmod(append(entget Ent)(list(list -3(append(list App)dList)))))
- ); end of Add_XData
- ; --------------------------------------------------------------------------------------------------------------------------
- (defun Delete_XData(
- Ent ; - Entity Ename
- apLst ; - List of Applications
- / xEnt)
-
- (setq xEnt(entget Ent apLst)
- xEnt(vl-remove(assoc -3 xEnt)xEnt)
- ); end setq
- (entmod xEnt)
- ); end of Delete_XData
- ; --------------------------------------------------------------------------------------------------------------------------
- (defun Read_XData(
- Ent ; - Entity Ename
- apName ; - Application name
- / xEnt)
-
- (setq xEnt(entget Ent(list apName))
- xEnt(vl-remove apName(cadar
- (vl-remove-if
- (function
- (lambda(a)(/= -3(car a))))xEnt)))
- ); end setq
- ); end of Read_XData
- ; --------------------------------------------------------------------------------------------------------------------------
Visual LISP控制台示例:
- [color="#0000ff"]; get some entity on screen[/color]
- _$ (setq ent(car(entsel)))
- <Entity name: 7ef02390>
- [color="#0000ff"]; add XData for application 'My Magic App' to entity[/color]
- _$ (Add_XData ent "My Magic App" (list(cons 1000 "Magic Data 1")(cons 1000 "Magic Data 2")))
- ((-1 . <Entity name: 7ef02390>) (0 . "LINE") (330 . <Entity name: 7ef01cf8>) (5 . "1B2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (370 . 70) (100 . "AcDbLine") (10 2183.93 319.511 0.0) (11 2637.11 1054.87 0.0) (210 0.0 0.0 1.0) (-3 ("My Magic App" (1000 . "Magic Data 1") (1000 . "Magic Data 2"))))
- [color="#0000ff"]; read XData foe the same application[/color]
- _$ (Read_XData ent "My Magic App")
- ((1000 . "Magic Data 1") (1000 . "Magic Data 2"))
- [color="#0000ff"]; delete XData for the same application[/color]
- _$ (Delete_XData ent (list "My Magic App"))
- ((-1 . <Entity name: 7ef02390>) (0 . "LINE") (330 . <Entity name: 7ef01cf8>) (5 . "1B2") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (370 . 70) (100 . "AcDbLine") (10 2183.93 319.511 0.0) (11 2637.11 1054.87 0.0) (210 0.0 0.0 1.0))
- _$
|