FastFiber

Snappoint centroid (opgelost)

Gestart door Tommeke, ma 31 01 2011, 10:53:35

Vorige topic - Volgende topic

Tommeke

Weet iemand of het mogelijk is om een snapfunctie (acad2011) te activeren om het centroid van een region in 1 keer te pakken? (net als endpoint, midpoint etc. Ik moet mijn regions op 0,0,0 zetten (damwandprofiel), maar moet nu telkens uit de massprop de x en y kopieren en in mijn commandline plakken en vervolgens verplaatsen naar 0,0 om een juiste massprop te krijgen. Allemaal dubbele handelingen...helaas. Alvast bedankt.

Tommeke

HofCAD

#1
Citaat van: Tommeke op ma 31 01 2011, 10:53:35
Weet iemand of het mogelijk is om een snapfunctie (acad2011) te activeren om het centroid van een region in 1 keer te pakken? (net als endpoint, midpoint etc. Ik moet mijn regions op 0,0,0 zetten (damwandprofiel), maar moet nu telkens uit de massprop de x en y kopieren en in mijn commandline plakken en vervolgens verplaatsen naar 0,0 om een juiste massprop te krijgen. Allemaal dubbele handelingen...helaas. Alvast bedankt.

Tommeke
Beste Tommeke,

Ik snap je verhaal niet, maar dat zal wel aan mij liggen.
1) Wil het zwaartepunt van een region.
2) Of wil je informatie via MASSPROP.
(Het 'Principal moments and X-Y directions about centroid:' wordt toch altijd gegeven.)

Met vriendelijke groet, HofCAD CSI.

PS Het zwaartepunt van een Region kan je met onderstaande Lisp krijgen.
(defun C:RegZwp(/ Ent)
 (vl-load-com)
 (setq Ent (entsel "\nSelecteer een region:"))
 (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object (car Ent ) ) "Centroid" )))
)
ACADcadabra

Tommeke

Citaat van: HofCAD op ma 31 01 2011, 11:08:42
Beste Tommeke,

Ik snap je verhaal niet, maar dat zal wel aan mij liggen.
1) Wil je zwaartepunt van een region.
2) Of wil je informatie via MASSPROP.

Met vriendelijke groet, HofCAD CSI


Ik heb een region van een damwandprofiel. Om hier de juiste informatie van te verkrijgen (d.m.v. massprop) moet mijn centroid van mijn region op 0,0 liggen. In eerste instantie staat ie dat niet (e.e.a. door kopieren naar ander bestand etc.). Om mijn region dus op 0,0 te krijgen kopieer ik de x/y waarde uit mijn "eerste" massprop en gebruik deze op via move om mijn region op 0,0 te krijgen. Mijn "tweede" massprop is dus juist. Mijn vraag: Is er een snapfunctie die het centroid van een region kan "aanhaken" om zo sneller mijn region te verplaatsen?

Tommeke

HofCAD

#3
Beste Tommeke,

ALs je met het commando UCS een nieuw gebruikers coördinatenstelsel aanmaakt,
werkt dat niet.
(defun C:RIZ();Region Info Zwaartepunt
(defun C:RegZwp (/ ss)
(vl-load-com)
(setq ss (ssget ":S"))
(vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object (ssname ss 0)) "Centroid")))
)
(command "._UCS" "_M" (C:RegZwp))
(command "._MASSPROP" "_P" "" "_N")
(command "._UCS" "_P")
)

of beter
(defun C:RIZ(/ ~CMD Ent Zwp);Region Info Zwaartepunt
(setq ~CMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(vl-load-com)
(setq Ent (entsel "\nSelecteer een region:"))
(setq Zwp (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object (car Ent)) "Centroid"))))
(command "._UCS" "_M" Zwp)
(command "._MASSPROP" Ent "" "_N")
(command "._UCS" "_P")
(princ (strcat "\nZwaartepunt op: " (rtos (car Zwp) 2 8) "," (rtos (cadr Zwp) 2 8) "\n"))
(textpage)
(setvar "CMDECHO" ~CMD)
(princ)
)

of
(defun C:RIZ(/ ~CMD Ent Zwp);Region Info Zwaartepunt
(setq ~CMD (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(vl-load-com)
(setq Ent (entsel "\nSelecteer een region:"))
(setq Zwp (vlax-safearray->list (vlax-variant-value (vlax-get-property (vlax-ename->vla-object (car Ent)) "Centroid"))))
(command "._MOVE" ent "" Zwp '(0 0))
(command "._MASSPROP" Ent "" "_N")
(command "._MOVE" Ent "" '(0 0) Zwp)
(princ (strcat "\nZwaartepunt op: " (rtos (car Zwp) 2 8) "," (rtos (cadr Zwp) 2 8) "\n"))
(textpage)
(setvar "CMDECHO" ~CMD)
(princ)
)


Met vriendelijke groet, HofCAD CSI.
ACADcadabra