马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 newer 于 2018-5-15 19:18 编辑
同ACAD的HATCH实体不同,经过API处理的HATCH,边界LOOP具有完备的“拓扑”关系。
一、合并(MERGE)
(xdrx_hatch_merge <ss ... ent>)
二、拆离(DETACH)
1、指定点位置,拆出一个带独立拓扑关系的HATCH
(xdrx_hatch_detach ent pnt)
(xdrx_getpropertyvalue ent "detach" pnt)
2、拆离所有带独立拓扑关系的HATCH
(xdrx_hatch_detach ent t)
(xdrx_getpropertyvalue ent "detach" t)
三、提取一个带独立拓扑关系的HATCH
(xdrx_getpropertyvalue ent "extractloopat" pnt)
- (defun c:tt ()
- (if (and (setq e (car (xdrx_entsel "\n拾取填充<退出>:" '((0 . "hatch")))))
- (setq pnt (getpoint "\n点取要提取的LOOP<退出>:"))
- (setq ss (xdrx_getpropertyvalue e "extractloopat" pnt))
- (xdrx_entity_setcolor ss (xdrx_math_rand 0 40))
- )
- (xd::drag:simplemove ss "\n插入点:" 5 t)
- )
- (princ)
- )
四、填充-》REGION (带拓扑关系)
(xdrx_hatch->region <ss ...ent ...>)
五、填充-》MPOLYGON(带拓扑关系)
(xdrx_hatch->mpolygon <ss ...ent ...>)
六、填充-》边界LOOP几何实体表
(xdrx_getpropertyvalue ent "getloops")
下面代码演示获取边界几何实体表,然后生成多段线并移动。
- (defun c:tt ()
- (if (and (setq e (car (xdrx_entsel "\n拾取填充<退出>:" '((0 . "hatch")))))
- (setq ents (xdrx_getpropertyvalue e "getloops"))
- )
- (progn (setq ss (xdge::entity:make ents))
- (xdrx_entity_setcolor ss 7)
- (xd::drag:simplemove ss "\n插入点:" 5 t)
- (xdge::free ents)
- )
- )
- (princ)
- )
七、填充-》Root Loops (获取拓扑关系的 根LOOP)
(xdrx_getpropertyvalue ent "rootloops" [t])
给T参数,直接生成GE几何实体,否则返回LOOP索引号(整数)
下面代码演示获取ROOT边界几何实体表,然后生成多段线并移动。
- (defun c:tt ()
- (if (and (setq e (car (xdrx_entsel "\n拾取填充<退出>:" '((0 . "hatch")))))
- (setq ents (xdrx_getpropertyvalue e "rootloops" t))
- )
- (progn (setq ss (xdge::entity:make ents))
- (xdrx_entity_setcolor ss 7)
- (xd::drag:simplemove ss "\n插入点:" 5 t)
- (xdge::free ents)
- )
- )
- (princ)
- )
八、填充-》Child Loops (获取拓扑关系的 某个根LOOP下的所有子LOOP)
(xdrx_getpropertyvalue ent "childloops" <ent or pnt or inx整数索引 or t>)
给T参数,获得所有的子LOOP。
返回LOOP 索引号表
下面代码演示获取ROOT下所有子LOOP边界几何实体表,然后生成多段线并移动。
- (defun c:tt ()
- (if (and (setq e (car (xdrx_entsel "\n拾取填充<退出>:" '((0 . "hatch")))))
- (setq pnt (getpoint "\n某个ROOT下拾取点<退出>:"))
- (setq ents (xdrx_getpropertyvalue e "childloops" pnt))
- )
- (progn (setq ss nil)
- (mapcar '(lambda (x)
- (setq e1 (xdrx_getpropertyvalue e "getloopat" x))
- (setq e2 (xdge::entity:make e1))
- (xdge::free e1)
- (setq ss (cons e2 ss))
- )
- ents
- )
- (xdrx_entity_setcolor ss 7)
- (xd::drag:simplemove ss "\n插入点:" 5 t)
- )
- )
- (princ)
- )
九、填充-》Parent Loops (获取拓扑关系的 某子LOOP的父LOOP)
(xdrx_getpropertyvalue ent "parent" <ent or pnt or inx整数索引>)
下面代码演示获取子ROOT的父LOOP边界几何实体表,然后生成多段线并移动。
- (defun c:tt ()
- (if (and (setq e (car (xdrx_entsel "\n拾取填充<退出>:" '((0 . "hatch")))))
- (setq pnt (getpoint "\n某子ROOT下拾取点<退出>:"))
- (setq inx (xdrx_getpropertyvalue e "parentloop" pnt))
- )
- (progn (setq e1 (xdrx_getpropertyvalue e "getloopat" inx))
- (setq e2 (xdge::entity:make e1))
- (xdge::free e1)
- (xdrx_entity_setcolor e2 7)
- (xd::drag:simplemove e2 "\n插入点:" 5 t)
- )
- )
- (princ)
- )
十、填充-》获取指定索引的边界LOOP几何实体
(xdrx_getpropertyvalue ent "getloopat" <inx>)
十一、填充-》给点,获取点最近的LOOP索引
(xdrx_getpropertyvalue ent "LoopIndexAt" <pnt>)
(xdrx_getpropertyvalue ent "ClosestLoopTo" <pnt>)
十二、填充-》获取LOOP数量
(xdrx_getpropertyvalue ent "NumLoops")
十三、填充-》获取指定实体、点附近或指定索引的拓扑关系的ROOT LOOP
(xdrx_getpropertyvalue ent "RootLoop" <ent or pnt or inx> [t])
给T参数返回几何实体,否则返回索引号
十四、填充实体边界拓扑关系查询
(xdrx_get_topology ent)
返回边界LOOP的拓扑结构表,如:
命令: (xdrx_get_topology (car (entsel)))
选择对象: ((0 (1) (2 (3))) (4 (5 (6))) (7 (8)) (9 (10) (11 (12))))
十五、填充面积(可以计算无填充面积属性面积为0的填充的面积)
(xdrx_get_area ent)
(xdrx_getpropertyvalue ent "area")
通用实体属性关于HATCH的查询函数 xdrx_getpropertyvalue 命令: (xdrx_getpropertyvalue (car (entsel)))
选择对象:
Class AcDbHatch:
├─Area
├─AssocObjIds
├─Detach
├─DetachLoopAt (Point)
├─ExtractLoopAt (Point)
├─Length
├─ShadeTintValue
├─GradientShift
├─GradientAngle
├─GradientName
├─GradientType
├─HatchLines
├─HatchObjectType
├─IsGradient
├─IsHatch
├─IsSolidFill
├─Elevation
├─HatchStyle
├─Normal
├─NumPatternDefinitions
├─PatternAngle
├─PatternScale
├─PatternSpace
├─PatternName
├─PatternDouble
├─PatternType
├─NumHatchLines
├─LoopIndexAt
├─loopTypeAt ├─LineGenerationEnabled(2007+)
├─OriginPoint(2007+)
Loops Class:
├─ClosestLoopTo
├─GetLoops
├─GetLoopAt
├─NumLoops
├─RootLoop
├─RootLoops
├─ParentLoop
├─ChildLoops
通用实体属性关于HATCH的编辑函数 xdrx_setpropertyvalue
命令: (xdrx_setpropertyvalue (car (entsel)))
选择对象:
Class AcDbHatch:
├─ShadeTintValue(Real)
├─GradientShift(Real)
├─GradientAngle(Real)
├─GradientName(STR)
├─GradientType
├─HatchObjectType(0 or 1)
├─Gradient(0 or 1 and STR)
├─Elevation(Real or Int)
├─HatchStyle(0 or 1 or 2)
├─Normal(Vector)
├─PatternAngle(Real)
├─PatternScale(Real)
├─PatternSpace(Real)
├─PatternName(0 or 1 or 2 and STR)
├─PatternDouble(T or Nil)
├─PatternType(0 or 1 or 2)
├─appendLoop (looptype (ent1,ent2...pickset))
├─removeLoopAt (loopinx)
├─LineGenerationEnabled(T or Nil)(2007+)
├─OriginPoint(Point)(2007+)
|