Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Vytvorenie referencie na skicu, axis to axis transform

Kompletní přehled příspěvků v tématu Vytvorenie referencie na skicu, axis to axis transform řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Tomáš Jaroš

Poslat zprávu | Profil
Datum: 26.3. 2015 | Zobrazeno: 9422x
Konfigurace CATIA: V5 R19

Text dotazu:
Dobrý deň

potreboval by som radu skúsenejších. Snažím sa zautomatizovať kopirovanie skice pomocou axis to axis transformacie avšak pri vytvarani referencie mi vysualko vždy vyhodí chybu: Value does not fall within the expected range..

Referencie na body a plochy sú bezproblémov, ale keď sa snažím o vytvorenie referencie na skicu alebo axis system tak je to vždy tento error. Skúšal som to aj cez selection ale tiež to nejde.

 Dim Ref1 As Reference

Dim Ref2 As Reference
Dim Ref3 As Reference
Dim Sketches1 As Sketches
Sketches1 = GeoSet_Variant.HybridSketches

Dim Temp_sketch As Sketch
Dim Temp_Axis As HybridShapeAxisToAxis
Dim RefAx As AxisSystem

RefAx = AxisSystems1.Item("AxS_Reference_sketch_origin")
Temp_sketch = GeoSet_Variant.HybridSketches.Item("Sketch_ref_B")
AXs = AxisSystems1.Item("AxS_sketch_1")

Ref1 = part1.CreateReferenceFromObject(RefAx)


Pri poslednom riadku stále hádže chybu.

Prípadne ak by niekto vedel ako sa dá pomocou vba zmeniť pozícia Positioned sketch, bolo by to ešte lepšie... ale čo som sa dočítal tak to asi nie je možné.

Ing Jan Cinert

Poslat zprávu | Profil
[#5000] | Publikováno: 26.03. 2015 - 19:38
Dobrý den,

v principu tam není žádná chyba a mělo by to fungovat. Všiml jsem si ale že nikde nemáte vytvořený objekt AxisSystems1. Prvně bych tedy ověřil, zda je v objektu RefAx opravdu vybraný AxisSystem (nesmí být Nothing).

Tohle je funkční (jinak je tohle naprostá rutina a musí fungovat):
Dim oRef As Reference

Dim oAxisSystem As AxisSystem
Dim oDoc As PartDocument
Dim oPart As Part

oDoc = CATIA.ActiveDocument
oPart = oDoc.Part
oAxisSystem = oPart.AxisSystems.Item("AxisSystem")
oRef = oPart.CreateReferenceFromObject(oAxisSystem)


Jinak se dá měnit pozice a orientace skici pomocí metody SetAbsoluteAxisData.
Tomáš Jaroš

Poslat zprávu | Profil
[#5002] | Publikováno: 26.03. 2015 - 19:48
No tak axissystem1 je definovany skôr v kòde. Ja som bol tiež presvedčený že to musí bežať ale nie... A visualko mi hádže chybu aj pri vytvárani referencie zo skice temp_sketch... Neviem fakt v čom môže byť problém. Teoreticky nejaká chýbajúca referencia na CATIU alebo niečo podobné? V premenných určite nie je nothing, skúšal som si ich vyselektovať a bez problémov...
Ing Jan Cinert

Poslat zprávu | Profil
[#5004] | Publikováno: 26.03. 2015 - 20:30
Kdyby chyběla reference tak to vůbec nerozběhnete. Divná je i ta chyba - něco podobného jsem ještě neviděl.

Co máte za OS a jaké visualko používát?
Tomáš Jaroš

Poslat zprávu | Profil
[#5006] | Publikováno: 26.03. 2015 - 21:27
No mám win 7 a Visual studio 2012 ultimate. Neviem prečo to nejde. Skúsil som už všetko čo ma napadlo. Na MSDN píšu: An ArgumentException exception is thrown when at least one of the arguments provided to a method does not meet the specifications of the parameters of the method.
Ale tak pokiaľ viem tak create reference by malo zhltnúť akýkoľvek object...

Prikladám screen chybovej hlášky

https://drive.google.com/file/d/0B5hI-P2L1DigWGptN085TnVVRm8/view?usp=sharing
Ing Jan Cinert

Poslat zprávu | Profil
[#5007] | Publikováno: 26.03. 2015 - 23:24
Hm, vypadá to tak že metoda očekává něco jiného. Co já vím tak reference jde vytvořit snad opravdu z jakékoliv geometrické entity.

Zkuste odmazat COM reference, přeregistrovat catii a vytvořit je znovu. Někdy se mi stalo že se někde něco nakoplo a pak to fungovalo půl napůl. Catii si makro připojilo, ale některé objekty byly neúplné.
Tomáš Jaroš

Poslat zprávu | Profil
[#5008] | Publikováno: 27.03. 2015 - 00:03
Skúsil som vymazať .dll referencie z umiestnenia projektu, taktiež som vymazal referencie vo visualku, reštartoval, nalinkoval referencie nanovo a stále rovnaký problém. V pokusnom dokumente mi to ide bez problémov, Už fakt netuším čím to môže byť. Pomohlo by keby som tu postol celý kód? Je to ale cca 600 riadkov a keď som skúsil len vyselektovať objecty z ktorých sa snažím urobiť referencie, v catii mi ich pekne označilo a žiaden problém nevznikol, teda s deklaráciou a podobne by nemal byť problém.
No v každom prípade ďakujem za reakcie, zajtra to už nejak musím rozlúsknuť lebo ma už tlačí termín :)
Ing Jan Cinert

Poslat zprávu | Profil
[#5009] | Publikováno: 27.03. 2015 - 00:34
Kód sem nedávejte, to nemá smysl. Tam bude něco jiného.

Nemáte náhodou registrovanou jinou verzi catie než na které testujete? To se mi také jednou stalo a to je snad vůbec to nejhorší. Všechno se tváří OK ale opak je pravdou. Od té doby používám místo COM referencí ty co si visualko vytvoří jako .NET (interopp) a je vyřešeno.

Jinak opravdu nevím, maximálně zkusit deklarovat skicu jen jako Object.
Tomáš Jaroš

Poslat zprávu | Profil
[#5010] | Publikováno: 27.03. 2015 - 02:30
No tak som na to nakoniec prišiel. Pred touto procedurou s errorom som volal viacero funkcii a jednou z nich bola aj taká, v ktorej som potreboval zistit nejake rozmery z iného dokumentu otvoreného v catii (external references), takze sa do part1 uložil iný part. A aj keď som vytváral referencie na point alebo plane po tom, nikdy som sa priamo neodkazoval na part1 premennú, riešil som to takto:
 Dim Ref1 As Reference

Dim Ref2 As Reference
Dim Name As String
Ref2 = hybridShapes_ref_surfaces.Item("OP_out")

Dim XYZ(2) As Object
Dim var As Object

Dim GrillLength As Integer
Dim grillHeight As Integer
grillHeight = NUD_Grill_height.Value
GrillLength = GetOP_out_length()

Dim Counter As Integer
Counter = 1

For i = 1 To GeoSet_Points.HybridShapes.Count
var = hybridShapes_temp.Item("Point_" & i)
var.GetCoordinates(XYZ)
If Math.Abs(XYZ(0)) <= GrillLength And Math.Abs(XYZ(2)) <= grillHeight Then
Ref1 = hybridShapes_temp.Item("Point_" & i)


Takže dilino som ja a nie visualko :) .

Ďakujem za reakcie, je super že existuje takéto fórum aj v rámci Československa :)


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.