Visual Solutions Studio - plugin - măsurarea lungimii curbelor

În această lecție vom încerca să creăm, în opinia mea, un simplu și cel mai necesar un plug-in scurt care măsoară lungimea curbelor. Poate pentru designeri aceasta este o funcție absolut inutilă, în timp ce oamenii care folosesc Corel pentru tot felul de scopuri tehnice sunt o funcție foarte necesară. Rețineți că nu aveți nevoie de programe terță parte, nu va trebui să legeți nimic, chiar și o persoană care nu este familiarizată cu programarea poate rezolva rapid și ușor această sarcină dificilă la prima vedere.

Folosind proprietatea curbei "Lungime", puteți vedea lungimea curbei fără a recurge la trucuri software. Este uimitor de ce o astfel de caracteristică curbă ca lungimea nu se realizează în fereastra proprietăților miezului în sine. Se pare că a rămas pentru "inovații" ale viitoarelor versiuni. Deci, creați o funcție nouă, numiți-o pe MyLength:

Apoi, folosind proprietatea curbei Lungime, vom afișa o fereastră de informații cu valoarea lungimii curbei selectate:

Sub MyLength ()
Dim S ca formă
Dim Ln ca dublu
Setați S = ActiveShape 'atribuiți S toate proprietățile curbei selectate
Ln = S.Curve.Length 'citiți valoarea lungimii curbei
MsgBox Ln 'extrage valoarea lungimii folosind mesajul de informare
End Sub

Versiunea cea mai simplă a plug-in-ului pentru a determina lungimea curbei este gata. Acum este momentul să testați codul nostru în acțiune. Desenați orice element vector, transformându-l neapărat într-o curbă ("convert to Curves" Ctrl + Q) pentru primitive coreliene, cum ar fi elipsă, dreptunghi, poligon. Apoi deschideți instrumentul / Macro / MacroManager (Alt + Shift + F11), găsiți numele proiectului nostru, în el modulul curent în care vor fi toate funcțiile create, inclusiv MyLength. Făcând-o, vedem o valoare numerică egală cu lungimea curbei selectate.

Dar pentru a aloca de fiecare dată o curbă este destul de incomod și dorim ca plug-in-ul nostru să obțină valoarea tuturor curbelor selectate. Pentru a face acest lucru, folosim o buclă în care sortim prin toate curbele noastre și adăugăm toate aceste valori variabilei. De asemenea, în prealabil, vom transforma toate elementele noastre în curbe, doar în cazul în care, și de a face selecția ungrouped. Și grupând toate acțiunile noastre și făcând anularea la sfârșit, după obținerea valorii lungimii tuturor elementelor, vom returna toate conversiile și dezgroupurile făcute în starea inițială. Obțineți pluginul gata:

Public Sub MyLength ()

ActiveDocument.Unit = cdrMillimeter 'Specificați unitatea de măsură implicită
ActiveDocument.BeginCommandGroup "Specificăm că de aici începe un grup de cod de program care este anulat cu un singur clic" anulați "
ActiveSelectionRange.UngroupAll 'Ungroupă obiectele selectate, dacă există
ActiveSelectionRange.ConvertToCurves 'Convertiți toate elementele în curbe, deoarece lungimea este disponibilă numai pentru curbe

Dim S ca formă
Dim Ln ca dublu

Pentru fiecare S în ActiveSelectionRange
Ln = Ln + S.Curve.Length
următor

ActiveDocument.EndCommandGroup "Indicăm că aici este ordonat un grup de acțiuni
ActiveDocument.Undo 'Deoarece valoarea lungimii totale este deja stocată în variabila Ln, am anula toate modificările făcute cu curbele în starea inițială

MsgBox Ln "Mm". "Lungimea curbelor" "Emisim valoarea lungimii totale a tuturor elementelor selectate.

Trebuie luată în considerare faptul că apare o eroare atunci când se calculează lungimea curbelor obiectelor care nu pot fi transformate în curbe, de exemplu, imagini raster, umbre.