Výběr, označení ploch na mrtvém solidu
| Uživatel | Příspěvek |
Pavel Francák ![]() ![]() Poslat zprávu | Profil |
Datum:
30.11. 2013
| Zobrazeno:
10848x Konfigurace CATIA: V5 R19 Text dotazu: |
Ing Jan Cinert ![]() Poslat zprávu | Profil |
[#4292]
| Publikováno:
01.12. 2013 - 11:04 Dobrý den,
nedávno jsem řešil přesně to samé. Hledal jsem i na zahraničních fórech a nic kloudného, jak by to šlo přímo nenašel. Přitom by to mělo být úplně snadné, tangentní výběr používá hned několik funkcí (thickness, draft, extract). Pokud neexistuje nějaká nedokumentovaná syntaxe pro dotaz search, tak to opravdu asi nejde. A bohužel to nevypadá lépe ani ve vyšších release V5 (ve V6 jsem to nezkoušel). Nakonec jsem to vyřešil makrem, které se opírá o extract a následné měření vzdáleností face na solidu od tohoto extractu, resp. bodu který se na extractu vytváří. Funguje to spolehlivě, ale s rostoucí velikostí modelu uměrně narůstá čas potřebný k identifikaci příslušnosti plochy k tangentnímu extractu. Takže uživatel pak nemusí s Ctrl oklikávat každou plochu (zvlášť pokud jsou hodně malé segmenty), ale chvilku to trvá. |
Pavel Francák ![]() ![]() Poslat zprávu | Profil |
[#4297]
| Publikováno:
01.12. 2013 - 15:43 Díky za tip, já na makra moc nejsem ale předám zkušenějšímu kolegovi. |
Ing Jan Cinert ![]() Poslat zprávu | Profil |
[#4299]
| Publikováno:
01.12. 2013 - 18:27 A nechcete si rovnou vyzkoušet makro Color Standard, které kromě obarvení ploch podle barevného standardu umí i výběr podle tangentní návaznosti? Licence na zkoušku zdarma na 21 dnů. |
Břeťa Doležal ![]() ![]() Poslat zprávu | Profil |
[#4305]
| Publikováno:
05.12. 2013 - 08:48 @Jan: Makro na výběr, funguje takto?
1. udělá se extrakt 2. prochází se jednotlivé plochy na solidu 3. měří se vzdálenosti -> určí plochy pod extraktem Šlo by napsat kousek kódu, který prochází plochy jednotlivé plochy na Body (solidu). Zatím to nepotřebuji,ale mohlo by to být zajímavé. Ev. napsat jen kde v objektovém modelu najít kolekci ploch na Body. Předem díky. |
Ing Jan Cinert ![]() Poslat zprávu | Profil |
[#4306]
| Publikováno:
05.12. 2013 - 09:17 Kolekce faces není nikde, ale jde to takhle:
oSelection.Add(solid) primitivní, ale velice účinné... |
Pavel Zálešák ![]() Poslat zprávu | Profil |
[#5506]
| Publikováno:
03.12. 2015 - 10:34 Dobrý den,
tečný výběr ploch objemu je tedy možný pouze pomocí makra. Když navážu na toto téma, a zeptám se jestli je možné vybrat podobným způsobem všechny plochy objemu pro obarvení? Někdy, zejména při kopírování objemů s linkou je někdy v barvách chaos a není možné barvy ani resetovat, ani nijak jednoduše vybírat... Díky, Pavel. |
Břeťa Doležal ![]() ![]() Poslat zprávu | Profil |
[#7293]
| Publikováno:
24.02. 2026 - 13:34 Potřebuji vybrat tečné plochy na Solidu, tak se vracím k tomuto tématu:
Když vyberu přes SelectElement2 plošku na Solidu a následně přetypuji objekt ze Selection na Face. Tak nevím jak následně položku převést na Reference. Názve Face. get_Name() je "Selection_RSur:(Face:(Brp:(Pad.1;2);None:();Cf14:());Add.1_ResultOUT;Z0;G10403)" CreateReferenceFromObject a CreateReferenceFromGeometry mi nefungují. refPloska = dil.CreateReferenceFromName(ploska.get_Name());funguje, ale asi jen na oko. Tady to následně zkolabuje extractTecPlocha = hsFactory.AddNewExtract(refPloska); když dám záznam makra, tak se Reference tvoří následovně: Set reference1 = part1.CreateReferenceFromBRepName("RSur:(Face:(Brp:(Pad.1;2);None:();Cf14:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR29)", add1) Musí se opravdu Reference tvořit přes CreateReferenceFromBRepName? Jaký je nej postup ze selekce plošky na solidu získat použitelnou referenci? Dá se vždycky počítat s tím, že řetěz: "Selection_RSur:(Face:(Brp:(Pad.1;2);None:();Cf14:());Add.1_ResultOUT;Z0;G10403)" Mohu vždy rozbít na "RSur:(Face:(Brp:(Pad.1;2);None:();Cf14:());" a připojit "WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR29)" ? Co značí CXR29 a kde dohledám? Z názvu selekce za středníkem "Add.1" bude vždy příslušný vhodný tvar?, který si musím následně vytěžit do příslušného tvarového objektu? Dim add1 As Add Set add1 = shapes1.Item("Add.1") |
Břeťa Doležal ![]() ![]() Poslat zprávu | Profil |
[#7294]
| Publikováno:
24.02. 2026 - 13:52 Tak nakonec s touto tvorbou reference mi to začalo šlapat. Jen obyčejné přetypování bez CreateReferenceFrom...
Reference refPloska = (Reference)ploska; |
Břeťa Doležal ![]() ![]() Poslat zprávu | Profil |
[#7295]
| Publikováno:
03.03. 2026 - 08:46 Podařilo se mi dopracovat se k pomalému řešení. Bych měl dotaz na případnou optimalizaci. Nejprve relativně rychle vyfiltruji plošky, které mají nulovou vzdálenost od Extractu. Následně jedu druhý filtr, ale zde narážím. Pokud mám tečnou plochu třeba z 500 plošek, tak mi potom makro běží přes hodinu. Beru plošky z Extractu a již předfiltrované na Solidu. Jedu následně tyto smyčky:
Neměl by někdo rychlejší a efektivnější způsob na filtrování plošek? Můj kód sice jede, ale dost pomalu...než projede cca 500x500x(~500/2) měření při 500ploškách. By DS mohl tu selekci plošek na Solidu také implementovat do CATIA, když už mají kód pro výběr ploch v rámci Extractu.... |
Uživatel nepřihlášen
Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.












