Cách xác định như sau:
- Nếu đối tượng kín là region, bạn dùng lệnh massprop sẽ biết được tọa độ Centroid của đối tượng.
- Nếu đối tượng kín chưa là region, hãy dùng lệnh region để convert nó thành region rồi thực hiện bước trên.
lệnh centroid dưới đây sẽ yêu cầu người dùng chọn 1 region hoặc 3dsolid, chương trình sẽ vẽ một điểm point vào tọa độ trọng tâm của nó:
(defun c:centroid ()
(vl-load-com)
(if (and (setq sel (entsel "\nRegion hoac 3D Solid: "))
(wcmatch (cdr (assoc 0 (entget (setq ent (car sel)))))
"REGION,3DSOLID"
)
)
(progn
(entmake
(list
(cons 0 "point")
(cons 10
(vlax-safearray->list
(vlax-variant-value
(vlax-get-property
(vlax-ename->vla-object ent)
'Centroid
)
)
)
)
)
)
(sssetfirst (ssadd (entlast)) (ssadd (entlast)))
)
(alert "Hay chon doi tuong REGION hoac SOLID!")
)
(princ)
)
- Nếu đối tượng kín là region, bạn dùng lệnh massprop sẽ biết được tọa độ Centroid của đối tượng.
- Nếu đối tượng kín chưa là region, hãy dùng lệnh region để convert nó thành region rồi thực hiện bước trên.
lệnh centroid dưới đây sẽ yêu cầu người dùng chọn 1 region hoặc 3dsolid, chương trình sẽ vẽ một điểm point vào tọa độ trọng tâm của nó:
(defun c:centroid ()
(vl-load-com)
(if (and (setq sel (entsel "\nRegion hoac 3D Solid: "))
(wcmatch (cdr (assoc 0 (entget (setq ent (car sel)))))
"REGION,3DSOLID"
)
)
(progn
(entmake
(list
(cons 0 "point")
(cons 10
(vlax-safearray->list
(vlax-variant-value
(vlax-get-property
(vlax-ename->vla-object ent)
'Centroid
)
)
)
)
)
)
(sssetfirst (ssadd (entlast)) (ssadd (entlast)))
)
(alert "Hay chon doi tuong REGION hoac SOLID!")
)
(princ)
)