| 
本帖最后由 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+)
 
 
 
 
 
 |