Blog cafe

Una dintre principalele resurse în designul modern este timpul. După cum știți, "timpul este bani" și nimeni nu dorește să efectueze repetări fără sens ale acelorași operațiuni. În acest sens, pachetele CAD / CAE au un set de instrumente pentru a efectua aceleași acțiuni prin apăsarea unui singur buton.







În acest articol, va fi luată în considerare una dintre modalitățile de automatizare a proiectării bazate pe o macrocomandă în API-ul Femap.

Blog cafe

Figura 1 - Caseta de dialog a programului

În cursul lucrărilor legate de investigarea efectului proceselor de coroziune asupra capacității de încărcare a structurilor, grosimea suprafețelor a fost modificată. Această procedură a fost efectuată nu de o duzină de ori și datorită faptului că aveau o mulțime de proprietăți, această operație a durat mult timp și a fost destul de plictisitoare. Prin urmare, sa decis automatizarea acestui proces cu API-ul Femap. Astfel, a fost creată o versiune generalizată a macro-ului pentru modificarea grosimii.
Esența macrocomenzii este aceea de a modifica automat valorile grosimii elementelor de suprafață cu un procentaj sau o valoare specifică specificată de utilizator.

La pornirea macro pentru utilizator o fereastră de dialog (fig. 1), care va trebui să selectați o acțiune (creștere sau descreștere), și selectați gradul de schimbare a grosimii (sau modificarea procentuală numerică), apoi introduceți numărul la care doriți să modificați grosimea.

Acum vom analiza în detaliu toate elementele programului și algoritmul acțiunilor.

Deoarece crearea oricărui program începe cu o diagramă (nu o fac niciodată), vom redacta ordinea acțiunilor noastre (Figura 2).

Blog cafe

Figura 2 - Diagrama bloc a programului

După elaborarea algoritmului de program, puteți continua în siguranță crearea acestuia. În acest caz, vom lucra cu obiectul "Proprietate" și, în primul rând, îl vom crea. Apoi, vom crea un "set" - acesta este un exemplu care este un matrice. În aceasta vom adăuga proprietățile existente în model și toți parametrii pe care îi au (inclusiv grosimea elementului, care are denumirea sa în proprietatea - pval (0)). Următorul pas este să creați o casetă de dialog și să creați elementele necesare (Figura 3).







Blog cafe

Figura 3 - Crearea unei casete de dialog

Apoi, scanând matricea, extragem din proprietatea grosime, efectuăm recalcularea ținând cont de parametrii selectați ai schimbării și returnez grosimea înapoi. Apoi, va fi afișat codul programului cu explicații. Culorile selecției vor corespunde culorilor din diagramă pentru potrivirea pieselor programului și a algoritmului.

Dacă App.Info_Count (FT_PROP) = 0 Apoi // excludeți eroarea de proprietăți lipsă
Msg = "Nu există proprietăți în model, ieșire".
rc = MsgBox (Msg, vbOkOnly)
GoTo OK
Sfârșit Dacă

Începeți dialogul UserDialog 400,203, caseta de dialog "Grosime" '% GRID: 10,7,1,1 //
OKButton 20,175,90,21
TextBox 130,119,130,21, .TextBox1
OpțiuneaGrupă .Grup1
OptionButton 20,49,210,14, "cresterea grosimii", OptionButton1
OptionButton 20,70,180,14, "scaderea grosimii", OptionButton2
OpțiuneaGrupă .Grup2
OptionButton 250,49,90,14, "Persent",. OptionButton3
OptionButton 250,70,90,14, "Value", OptionButton4
CancelButton 310,175,80,21
text 110,98,210,14, "Modificarea valorii în grosime", Text1
End Dialog

Dim dlg Ca UserDialog

Dacă Dialog (dlg) = 0 Apoi // excludeți eroarea închiderii programului cu butonul de anulare
GoTo OK
Sfârșit Dacă

Dacă este gros <= 0 Then //исключение ошибки значения толщины
Msg = "Câmpul de grosime este gol"
rc = MsgBox (Msg, vbOkOnly)
GoTo OK
Sfârșit Dacă

PropSet.AddAll (FT_PROP) // adăugați pentru a selecta toate proprietățile modelului
Dacă dlg. grup1 = 0 Apoi
Dacă dlg.group2 = 0 Apoi
În timp ce se adaugă buclă de recalculare grosime
feProp.Get (PropSet.CurrentID) // extrageți proprietatea curentă din selecție
a = feProp.pval (0) * recalcularea grosieră / 100 // a coeficientului de schimbare
feProp.pval (0) = feProp.pval (0) + a // recalculește grosimea
feProp.Put (feProp.ID) // returnați valoarea grosimii la proprietate
merge încet
Sfârșit Dacă
Dacă dlg.group2 = 1 Apoi
În timp ce feProp.Next
feProp.Get (PropSet.CurrentID)
feProp.pval (0) = feProp.pval (0) + gros
feProp.Put (feProp.ID)
merge încet
Sfârșit Dacă
Sfârșit Dacă
Dacă dlg.group1 = 1 Apoi
Dacă dlg.group2 = 0 Apoi
În timp ce feProp.Next
feProp.Get (PropSet.CurrentID)
a = feProp.pval (0) * Grosime / 100
feProp.pval (0) = feProp.pval (0) - a
feProp.Put (feProp.ID)
merge încet
Sfârșit Dacă
Dacă dlg.group2 = 1 Apoi
În timp ce feProp.Next
feProp.Get (PropSet.CurrentID)
feProp.pval (0) = feProp.pval (0) - gros
feProp.Put (feProp.ID)
merge încet
Sfârșit Dacă
Sfârșit Dacă
OK:
End Sub

Apoi, această macrocomandă a fost instalată pe modelul cadrului de locomotivă diesel și a fost făcută o actualizare. Schimbările principale au fost posibilitatea de ajustare a valorilor unor grosimi specifice, toate grosimile au fost împărțite în elementele principale ale structurii și împrăștiate sub diferite forme, și a fost adăugată posibilitatea reutilizării macrocomenzii fără restart. Un exemplu de formă a macro-ului modificat este prezentat în Figura 4.

Blog cafe

Figura 4 - Exemplu de formă macro modificată

Astfel, am efectuat proprietatea de bază a automatizării - economisind timpul de proiectare și schimbând toate proprietățile modelului cu câteva clicuri ale mouse-ului.







Articole similare

Trimiteți-le prietenilor: