Zobrazit plnou verzi příspěvku: Delit v meritku

Asterix
14.07.2005, 13:31
Dobrý den, chtěla bych požádat o radu zkušenějšího programátora než sem já. V cadu je funkce "dělm" (measure), kterou bych potřebovala použít v makru. Bohužel nejsem, schopná nalézt postup jak toho dosáhnout. Poradí někdo? Díky 

Vladimír Michl
14.07.2005, 13:44
v jakém makru?
např. v LISPu stačí něco jako
(setq e (entsel))(command "_MEASURE" e 123.45)
 

Asterix
14.07.2005, 13:47
Ve VisualBasicu

Vladimír Michl
14.07.2005, 14:24
to je horší, DIVIDE/MEASURE a EXPLODE nemají ActiveX rozhraní, takže jedině použít SendCommand

Asterix
14.07.2005, 14:39
Hmmm, tak s tim nemam vubec zadnou zkusenost, ale zkusim to nekde najit. Dekuju

Asterix
14.07.2005, 15:12
Tak sem neco nasla, ale neni to uplne ono. Asi mam spatne paramtery. SendCommand poustim v cyklu, ale provede se to pouze u posledniho prvku. Nemohl byste mi jeste poradit? Zapsane to mam nejspis uplne hrozne takhle:
For Each prvky In vyberThisDrawing.SendCommand "_measure" & vbCr & "vyber" & vbCr & "b" & vbCr & "geohaie2" & vbCr & "a" & vbCr & "10" & vbCr Next prvky
prvky je promenna Dim prvky As AcadEntity
vyber je Dim vyber As AcadSelectionSet
 

Seiner
14.07.2005, 15:32
Jen při zběžném pohledu mi nesedí ...& vbCr & "vyber" & vbCr & "b"...
Vy tam posíláte text vyber, ale podle mého by tam měla být proměnná prvky.

Asterix
14.07.2005, 16:00
Ja to zkousela oboji, ale chovalo se stejne. Ted to z nejakeho duvodu nefunguje najednou vubec. V prikazove radce v cadu to hlasi chybu Neplatny vyber.Ocekava se jediny objekt. A to i v pripade, kdy je ve vyberu jen 1 prvek. Pro dnesek to vzdavam. Dekuju za pomoc.

Seiner
15.07.2005, 08:18
A jak tvorite tu vyberovou mnozinu?

Asterix
15.07.2005, 08:19
Tak sem tu zas. Zkousela jsem jiny typ cyklu, kde se pouzivaji indexy, ale nepomohlo to.  Nevim jak mam v prikazu SendCommand napsat parametr prvky(i) tak, aby to pak v prikazove radce nehlasilo chybu *Neplatny vyber*, Ocekava se jediny objekt.
Dim prvky(0 To 10) As AcadEntity
For i = 0 To N prvky(i).Offset (-10) ThisDrawing.SendCommand "_measure" & vbCr & "prvky(i)" & vbCr & "b" & vbCr & "geohaie2" & vbCr & "a" & vbCr & "10" & vbCrNext i

Asterix
15.07.2005, 08:27
Zatim jen tak provizorne. Mám ve výkresu jen 2 usecky a na tom to zkousim.
For i = 0 To 1Set prvky(i) = ThisDrawing.ModelSpace.Item(i)Next i

Seiner
15.07.2005, 08:41
Podle mého je zásadní nepochopení v tom, že tam nemůžete napsat text "prvky(i)". Metoda SendCommand v podstatě posílá texty na příkazovou řádku. Napsala byste na příkazovou řádku prvky(i) a očekávala nějaký výsledek?Přiznám se, že jsem ještě podobnou konstrukci nepoužil a teď nevím, jak to udělat. V lispu bych se odkazoval na proměnnou, ve které by byla příslušná entita. Možná nějaká konstrukce s příkazem "VYBER" a vybrání Předchozí.

Vladimír Michl
15.07.2005, 11:00
Mrkněte se na kurz 13 na stránce Téma - programování AutoCADu a Inventoru, třeba vám to pomůže:http://www.cadforum.cz/cadforum/tema.asp

Asterix
15.07.2005, 12:37
Děkuju moc. Projdu to. Hezký den. L.

Asterix
15.07.2005, 14:53
Funguje. Uz jen nejaky kosmeticky upravy a je hotovo. Klidne pak dam makro k dispozici kdyz bude zajem. Jeste jednou dekuju vsem a preji hezky den.