Sunteți pe pagina 1din 18

Lucrarea nr.

INTRODUCERE ÎN DRAFTING

4.1. SCOPUL LUCRĂRII


Lucrarea are drept scop iniţierea studenţilor în mediul de desenare
Drafting al sistemului de proiectare TRIBON M3.

4.2. DESFĂŞURAREA LUCRĂRII


Lucrarea prezintă structura mediului de desenare Drafting, facilitând
cunoaşterea interfeței aplicaţiei şi a seturilor de instrumente disponibile.
Studenţii trebuie să se acomodeze cu arhitectura aplicaţiei, să identifice
meniurile de funcţii, barele de instrumente, precum şi facilităţile de desenare,
editare şi vizualizare. De asemenea, aceștia trebuie să rezolve aplicaţiile
propuse ca temă.

4.3. INTERFAŢA DRAFTING


Aplicaţia Drafting se constituie într-un set complet de activităţi pentru
desenare.
Cu ajutorul aplicaţiei Drafting se pot realiza următoarele operaţii:
 extragerea şi vizualizarea obiectelor TRIBON M3 (elemente
structurale, tubulaturi, echipamente, ansambluri, trasee de cabluri electrice
etc.) în vedere 3D şi/sau proiecţie 2D;
 generarea de desene 2D, cu informaţii complete pentru producţie;
 generarea de obiecte 3D, cu ajutorul primitivelor predefinite;
 manipularea obiectelor 3D.
După selectarea proiectului curent de navă, se poate lansa în execuţie
aplicaţia Drafting (fig. 4.1) [1]. Lansarea aplicaţiei Drafting se realizează prin
succesiunea de comenzi START > All Programs > Tribon M3 > Drafting.

47
Proiectarea asistată de calculator a echipamentelor UIP

Fig. 4.1. Interfaţa aplicaţiei Drafting

4.4. BARE DE INSTRUMENTE


Aplicaţia Drafting dispune de o paletă largă de bare de instrumente
grupate pe seturi de activităţi specifice. Pentru a nu supraîncărca sesiunea
curentă de lucru, majoritatea barelor de instrumente sunt invizibile în interfaţa
iniţială a aplicaţiei, dar pot fi afişate în orice moment prin selectarea seturilor
de instrumente care se regăsesc în bara principală de meniuri (Menu Bar >
View > Toolbars).

a) Standard Toolbar
Uneltele barei standard sunt (fig. 4.2): 1 – New Drawing; 2 – Open
Drawing; 3 – Save Drawing; 4 – Cut; 5 – Copy; 6 – Paste; 7 – Print; 8 – Insert
Model (Ctrl+M); 9 – Exchange Model; 10 – Model Information; 11 – Verify.
48
Lucrarea nr. 4

Fig. 4.2. Standard Toolbar

b) Controls Toolbar
Uneltele barei de control (de opţiuni) sunt (fig. 4.3): 1 – Operation
Complete (RETURN); 2 – Quit (F9); 3 – Cancel (ESC); 4 – Options (F10); 5 –
All (F11); 6 – Repaint (Ctrl+R); 7 – Zoom Auto (Ctrl+A); 8 – Zoom In
(Ctrl+I); 9 – Zoom Out (Ctrl+U); 10 – Zoom Previous (Ctrl+E); 11 – Select
Window; 12 – Pan (Ctrl+W).

Fig. 4.3. Controls Toolbar

c) Geometry Toolbar
Uneltele barei de generare a geometriilor sunt (fig. 4.4): 1 – Virtual
Geometry Mode; 2 – Insert Point; 3 – Insert Line; 4 – Insert Arc; 5 – Insert
Poly Line; 6 – Insert Conic; 7 – Insert Spline; 8 – Insert Rectangle; 9 – Insert
Square; 10 – Insert 2D Primitive; 11 – Insert Parallel Curve.

Fig. 4.4. Geometry Toolbar

d) Vitesse Toolbar
Uneltele barei de programare sunt (fig. 4.5): 1 – Vitesse; 2 – Edit
script; 3 – Run selected; 4 – Selceted Script to Run; 5 – Debugger; 6 – Vitesse
log; 7 – Reload modules; 8 – Terminate current script.

Fig. 4.5. Vitesse Toolbar

49
Proiectarea asistată de calculator a echipamentelor UIP

e) 2D Point Mode Toolbar


Uneltele barei de puncte 2D sunt (fig. 4.6): 1 – Cursor Position; 2 –
Node Point; 3 – Key In; 4 – Event Point; 5 – Midpoint; 6 – Intersection; 7 –
Nearest Point; 8 – Existing Point; 9 – Arc Centre; 10 – Arc by Angle; 11 –
Distance along Contour; 12 – Centre of Gravity; 13 – Symbol Connection; 14
– Offset Current; 15 – Automatic; 16 – Add Offset.

Fig. 4.6. 2D Point Mode Toolbar

f) Lock Toolbar
Uneltele barei de blocare sunt (fig. 4.7): 1 – Lock U; 2 – Lock V.

Fig. 4.7. Lock Toolbar

g) Transformation Toolbar
Uneltele barei de transformări sunt (fig. 4.8): 1 – Scale; 2 – Move
Delta; 3 – Move Two Positions; 4 – Rotate Delta; 5 – Rotate Two Positions; 6
– Rotate 45 Degrees; 7 – Rotate 90 Degrees; 8 – Rotate 180 Degrees; 9 –
Rotate -90 Degrees; 10 – Mirror V; 11 – Mirror U; 12 – Mirror any line; 13 –
Parallel; 14 – Four Positions; 15 – Same as; 16 – Along Curve; 17 – Snap; 18
– Lock U; 19 – Lock V; 20 – Centre; 21 – For Detection.

Fig. 4.8. Transformation Toolbar

h) Subpicture Level Toolbar


Uneltele barei nivelelor de subpicturi sunt (fig. 4.9): 1 – One (Ctrl+1);
2 – Two (Ctrl+2); 3 – Three (Ctrl+3); 4 – Four (Ctrl+4).

50
Lucrarea nr. 4

Fig. 4.9. Subpicture Level Toolbar

i) 3D Request Toolbar
Uneltele barei de opţiuni 3D sunt (fig. 4.10): 1 – Key In; 2 – Event; 3 –
Offset Current; 4 – Lock U; 5 – Lock V; 6 – Lock View; 7 – Lock X; 8 – Lock
Y; 9 – Lock Z; 10 – Lock Event Plane; 11 – Lock XZ; 12 – Lock YZ; 13 –
Lock XY; 14 – Lock Event Line; 15 – Lock Any Line; 16 – Unlock; 17 – Set
Current; 18 – Add Offset; 19 – Verify.

Fig. 4.10. 3D Request Toolbar

j) Geometry 2 Toolbar
Uneltele barei de editare a geometriilor sunt (fig. 4.11): 1 – Transform
Geometry; 2 – Copy Geometry; 3 – Delete Geometry.

Fig. 4.11. Geometry 2 Toolbar

k) Shading Toolbar
Uneltele barei de umbrire sunt (fig. 4.12): 1 – Select; 2 – Auto Scale; 3
– Zoom Window; 4 – Zoom; 5 – Slide; 6 – Spin; 7 – Walk; 8 – Tilt; 9 – Top
View; 10 – Frame View-Looking Aft; 11 – Frame View-Looking Fwd.; 12 –
Side View-Looking Port; 13 – Isometric-Looking Aft; 14 – Isometric-Looking
Fwd.; 15 – Select Perspective Camera.

Fig. 4.12. Shading Toolbar

51
Proiectarea asistată de calculator a echipamentelor UIP

l) Dimension Toolbar
Uneltele barei de dimensionare sunt (fig. 4.13): 1 – Linear Dimension;
2 – Radius Dimension; 3 – Diameter Dimension; 4 – Angle Dimension; 5 –
Curved Dimension; 6 – Area Dimension; 7 – Distance Dimension; 8 – 3D
Linear Dimension; 9 – 3D Axis Parallel Dimension; 10 – 3D Co-ordinate
Dimension; 11 – 3D Curved Length Dimension; 12 – WCOG Dimension; 13 –
Shell Profile Mounting Angle Dimension; 14 – Dimension3D Ruler
Dimension; 15 – Note; 16 – Modify Dimension; 17 – Move Reference.

Fig. 4.13. Dimension Toolbar

m) Subpicture Toolbar
Uneltele barei de subpicturi sunt (fig. 4.14): 1 – Current Subpicture; 2
– Transform Subpicture; 3 – Copy Subpicture; 4 – Delete Subpicture; 5 – Split
Subpicture; 6 – Regroup Subpicture.

Fig. 4.14. Subpicture Toolbar

n) Predefined Windows Toolbar


Uneltele barei de ferestre predefinite sunt (fig. 4.15): 1 – Original
Scale (Ctrl+Shift+0); 2 – Display Window 1 (Ctrl+Shift+1); 3 – Display
Window 2 (Ctrl+Shift+2); 4 – Display Window 3 (Ctrl+Shift+3); 5 – Display
Window 4 (Ctrl+Shift+4); 6 – Display Window 5 (Ctrl+Shift+5); 7 – Display
Window 6 (Ctrl+Shift+6); 8 – Display Window 7 (Ctrl+Shift+7); 9 – Display
Window 8 (Ctrl+Shift+8); 10 – Display Window 9 (Ctrl+Shift+9); 11 –
Predefined window description; 12 – Define predefined window.

Fig. 4.15. Predefined Windows Toolbar

52
Lucrarea nr. 4

o) Symbol Toolbar
Uneltele barei de simboluri sunt (fig. 4.16): 1 – Insert Symbol; 2 –
Move Symbol; 3 – Copy Symbol; 4 – Modify Symbol; 5 – Delete Symbol.

Fig. 4.16. Symbol Toolbar

p) Text Toolbar
Uneltele barei de texte sunt (fig. 4.17): 1 – Insert Text; 2 – Edit Text; 3
– Move Text; 4 – Copy Text; 5 – Modify Text; 6 – Delete Text Line.

Fig. 4.17. Text Toolbar

4.5. PROGRAMAREA BARELOR DE INSTRUMENTE


Modulul de programare automată a sistemului de proiectare TRIBON
M3 se bazează pe limbajul de programare PYTHON.
PYTHON nu solicită un software specializat, script-urile de
programare putând fi concepute în oricare utilitar de editare a textelor.
Aplicaţia de programare a sistemului TRIBON M3 este VITESSE, care
este adaptat cerinţelor de sistem.
În continuare, se explică modul în care se pot genera bare de unelte,
conform cerinţelor de utilizator [2].
În momentul în care se lansează o aplicaţie TRIBON M3, sistemul
citeşte fişierul de iniţializare trig_draft_init.py (tabel 4.1) care se găseşte în
directorul Trigger (C:\Tribon\M3\Vitesse\Trigger).
Fişierul conţine funcţiile predefinite post(*args) şi pre(*args). Pentru a
genera bare de unelte noi, trebuie editată funcţia post(*args). Utilizatorul are
posibilitatea să definească două tipuri de bare de instrumente, standard sau
personalizate (definite de către utilizator).

Tabel 4.1. Structura fişierului de iniţializare trig_draft_init.py


import kcs_gui
import kcs_util
import basic_design_menu
53
Proiectarea asistată de calculator a echipamentelor UIP

def post(*args):
try:
if kcs_util.app_basic_design():
basic_design_menu.add(10)
except:
print "Failed adding menu(s): ",kcs_gui.error
return kcs_util.trigger_ok()
def pre(*args):
return kcs_util.trigger_ok()

4.5.1. Generarea barelor de instrumente personalizate

Pentru început, trebuie construite icon-urile (imaginile) butoanelor,


prin generarea unei biblioteci de fişiere de tip .ico sau .bmp.
În continuare, trebuie create scripturile (fişiere de tip .py) care definesc
funcţiile de utilizator, asignate butoanelor barelor de instrumente.
Codul de definire a butoanelor din bara de instrumente personalizată
are expresia din tabelul 4.2.

Tabel 4.2. Cod de definire a funcţionalităţii butoanelor din bara de instrumente personalizată
kcs_gui.toolbar_button_usr_add(Toolbar, Position, Script, ImageFile, Tooltip, Message)

O secvenţă de script pentru generarea barelor de instrumente


personalizate are sintaxa din tabelul 4.3.

Tabel 4.3. Secvenţă de script pentru generarea barelor de instrumente personalizate


import kcs_gui
import kcs_util

def post(*args):
if (kcs_util.app_pipe()) or (kcs_util.app_ventilation()) or (kcs_util.app_drafting()):
try:
iconFolder = "C:\\tribon\\m3\\vitesse\\trigger\\iconFiles\\"
piping_toolbar_user = kcs_gui.toolbar_add("Piping Toolbar 1")
kcs_gui.toolbar_button_usr_add(piping_toolbar_user,0,"piping_function_1",iconFolder +
"piping_function_1.ico","Function 1","Function 1")
kcs_gui.toolbar_button_usr_add(piping_toolbar_user,1,"piping_function_2",iconFolder +
"piping_function_2.ico","Function 2","Function 2")
kcs_gui.toolbar_button_usr_add(piping_toolbar_user,2,"piping_function_3",iconFolder +
"piping_function_3.ico","Function 3","Function 3")
except:
print "Failed adding toolbar buttons: ",kcs_gui.error

În exemplul din tabelul 4.3, piping_toolbar_user defineşte bara de


instrumente personalizată, iar piping_function_1, piping_function_2 şi
piping_function_3 iniţiază scripturile definite de utilizator pentru butoanele
54
Lucrarea nr. 4
barei de instrumente. Calea şi extensia fişierelor script sunt omise în sintaxa
programului, dar ele trebuie stocate, obligatoriu, în directorul de cale al
limbajului de programare PYTHON (C:\Tribon\M3\Vitesse\Lib).
Sintaxa de cod conţinută în tabelul 4.3. adaugă la interfaţa aplicaţiei
TRIBON M3 bara de instrumente personalizată cu numele Piping Toolbar 1,
având cele trei butoane definite de către utilizator.

4.5.2. Generarea barelor de instrumente standardizate

La fel ca şi în exemplul precedent, trebuie construite icon-urile


(imaginile) butoanelor, prin generarea unei biblioteci de fişiere de tip .ico sau
.bmp.
În continuare, trebuie identificate codurile funcţiilor care vor fi
asignate butoanelor barelor de instrumente standardizate.
Codul de definire a butoanelor din bara de instrumente standardizate
are expresia din tabelul 4.4.

Tabel 4.4. Cod de definire a funcţionalităţii butoanelor din bara de instrumente standardizate
kcs_gui.toolbar_button_std_add(Toolbar, Position, Function, ImageFile, Tooltip, Message)

O secvenţă de script pentru generarea barelor de instrumente


standardizate are sintaxa din tabelul 4.5.

Tabel 4.5. Secvenţă de script pentru generarea barelor de instrumente standardizate


import kcs_gui
import kcs_util

def post(*args):
if (kcs_util.app_pipe()) or (kcs_util.app_ventilation()) or (kcs_util.app_drafting()):
try:
iconFolder = "C:\\ tribon\\m3\\vitesse\\trigger\\iconFiles\\"
piping_toolbar_std = kcs_gui.toolbar_add("Piping Toolbar 2")
kcs_gui.toolbar_button_std_add(piping_toolbar_std, 0, 33453, iconFolder +
"pipe_move.ico","Pipe Move")
kcs_gui.toolbar_button_std_add(piping_toolbar_std, 1, 33454, iconFolder +
"pipe_duplicate.ico","Pipe Duplicate")
kcs_gui.toolbar_button_std_add(piping_toolbar_std, 2, 33455, iconFolder +
"pipe_group_rename.ico","Pipe Group Rename")
except:
print "Failed adding toolbar buttons: ",kcs_gui.error

În exemplul din tabelul 4.5, piping_toolbar_std defineşte bara de


instrumente standardizată, iar 33453 (funcţie de mutare a tubulaturii), 33454
(funcţie de duplicare a tubulaturii) şi 33455 (funcţie de redenumire a
tubulaturii) sunt codurile funcţiilor asignate butoanelor barei de instrumente.
Calea şi extensia fişierelor script sunt omise în sintaxa programului, dar ele
55
Proiectarea asistată de calculator a echipamentelor UIP
trebuie stocate, obligatoriu, în directorul de cale al limbajului de programare
PYTHON (C:\Tribon\M3\Vitesse\Lib).
Sintaxa de cod conţinută în tabelul 4.5. adaugă la interfaţa aplicaţiei
TRIBON M3 bara de instrumente personalizată cu numele Piping Toolbar 2,
având cele trei butoane pentru lansarea funcţiilor predefinite.

4.6. APLICAŢII
4.6.1. Crearea barelor de instrumente utilizator

În baza rutinelor de programare VITESSE, să se construiască o bară de


instrumente standardizată care să conţină 6 butoane asignate funcţiilor
predefinite de ştergere pentru entităţile de tip cotă, notă, layer, arie, text
individual şi text multiplu, precum şi 1 bară de instrumente personalizată, cu
un singur buton, care să permită modificarea conţinutul entităţilor de tip text.

Rezolvare:

1. Se lansează aplicaţia Drafting (START > All Programs > Tribon M3


> Drafting) şi se inspectează bara de instrumente, aflată sub bara principală de
meniuri (fig. 4.18);
2. Se deschide meniul View şi se vizualizează funcţiile predefinite
disponibile;

Fig. 4.18. Bara de instrumente iniţială a aplicaţiei Drafting

2. Se părăseşte aplicaţia Drafting (File > Exit);


3. Se realizează o copie de rezervă a fişierul de iniţializare trig_draft_
init.py (tabel 4.6) din directorul [Trigger] (C:\Tribon\M3\Vitesse\ Trigger), sub
denumirea Copy of trig_draft_init.py.

Tabel 4.6. Fişierul iniţial de iniţializare” trig_draft_init.py”


Nr.
Sintaxa programului
linie
1 import kcs_gui
2 import kcs_util
3 import basic_design_menu
56
Lucrarea nr. 4
4 #
5 # All user interface changes must be done in the post-trigger.
6 # When the pre-trigger fires, Windows has not yet created the
7 # necessary objects we depend on.
8 #
9 def post(*args):
10 #
11 # Add menu(s)
12 #
13 try:
14 if kcs_util.app_basic_design():
15 basic_design_menu.add(10)
16 except:
17 print "Failed adding menu(s): ",kcs_gui.error
18 return kcs_util.trigger_ok()
19 def pre(*args):
20 return kcs_util.trigger_ok()

4. Cu ajutorul editorului de texte Notepad, se deschide fişierul


trig_draft_init.py şi se editează conform indicaţiilor din tabelul 4.7.

Tabel. 4.7. Fişierul modificat de iniţializare” trig_draft_init.py”


Nr.
Sintaxa programului
linie
1 import kcs_gui
2 import kcs_util
3 import basic_design_menu
4 #
5 # All user interface changes must be done in the post-trigger.
6 # When the pre-trigger fires, Windows has not yet created the
7 # necessary objects we depend on.
8 #
9 def post(*args):
10 #
11 # Add menu(s)
12 #
13 IconFolder="C:\\Tribon\\M3\\Vitesse\\Trigger\\IconFiles\\"
14 try:
15 deleting_toolbar = kcs_gui.toolbar_add("Delete Toolbar")
16 kcs_gui.toolbar_button_std_add(deleting_toolbar,0,32884,IconFolder + "DimDel.bmp")
17 kcs_gui.toolbar_button_std_add(deleting_toolbar,1,32888,IconFolder + "NoteDel.bmp")
18 kcs_gui.toolbar_button_std_add(deleting_toolbar,2,32985,IconFolder + "LayerDel.bmp")
19 kcs_gui.toolbar_button_std_add(deleting_toolbar,3,32977,IconFolder + "AreaDel.bmp")
20 kcs_gui.toolbar_button_std_add(deleting_toolbar,4,32872,IconFolder + "MTextDel.bmp")
21 kcs_gui.toolbar_button_std_add(deleting_toolbar,5,32871,IconFolder + "TextDel.bmp")
22 text_toolbar = kcs_gui.toolbar_add("Change Text Toolbar")
23 kcs_gui.toolbar_button_usr_add(text_toolbar,0,"change_text",IconFolder + "change_text_button.ico","Text
Modify")
24 if kcs_util.app_basic_design():
25 basic_design_menu.add(10)
26 except:
27 print "Failed adding menu(s): ",kcs_gui.error
28 return kcs_util.trigger_ok()
29 def pre(*args):
30 return kcs_util.trigger_ok()

57
Proiectarea asistată de calculator a echipamentelor UIP

Referitor la structura modificată a fişierului trig_draft_init.py, se


impun următoarele comentarii:
 pe linia 13 se defineşte calea către directorul în care sunt stocate
imaginile butoanelor barelor de instrumente;
 pe linia 15 se defineşte bara de instrumente standardizată
deleting_toolbar, care se va numi „Delete Toolbar”;
 pe liniile 16…21 sunt definite butoanele barei de instrumente
standardizate, cu specificarea codurilor funcţiilor predefinite asignate şi a
denumirilor imaginilor care se ataşează fiecărui buton, adică DimDel.bmp,
NoteDel.bmp, LayerDel.bmp, AreaDel.bmp, MTextDel.bmp, TextDel.bmp
(imaginile ataşate butoanelor trebuie salvate în subdirectorul [IconFiles]);
 pe linia 22 se defineşte bara de instrumente personalizată
text_toolbar, care se va numi „Change Text Toolbar”;
 pe linia 23 se defineşte butonul barei de instrumente personalizate,
cu specificarea numelui fişierului change_text, care defineşte funcţionalitatea
butonului, a denumirii imaginii ataşate butonului (change_text_ button.ico) şi
a mesajul cu textul „Text Modify”.
5. Se copiază subdirectorul [IconFiles], care conţine imaginile asignate
butoanelor, în directorul [Trigger] (C:\Tribon\M3\Vitesse\Trigger);
6. Cu ajutorul editorului de texte Notepad se editează fişierul
change_text.py, conform indicaţiilor din tabelul 4.8 şi se salvează în directorul
[Lib] (C:\Tribon\M3\Vitesse\Lib);

Tabel 4.8. Sintaxa fişierului „change_text.py” [2]


import KcsText
import KcsCaptureRegion2D
import kcs_ui
import kcs_draft
import kcs_util
import string
import KcsRectangle2D
import os
import KcsCursorType
import KcsPoint2D
import KcsStat_point2D_req

def fd_change_text():
try:
confirm = "no"
answer = ["Change text without confirmation","Change text with confirmation"]
result, index = kcs_ui.choice_select("Text", "Answer", answer)
if result == kcs_util.ok():
while 1:
if index == 2: confirm = "yes"
text = KcsText.Text()
58
Lucrarea nr. 4
#Request the user to input the text to be search
note = kcs_ui.string_req("Text to be changed: ")
if note[0] != kcs_util.ok():
exit()
note_text = string.replace(note[1],"*","") # remove the wildcards since string.find()
function doesn't need it
#Request the user to input the new text
note_new = kcs_ui.string_req("Change with: ")
if note_new[0] != kcs_util.ok():
exit()
note_text_new = string.replace(note_new[1],"*","") # remove the wildcards since
string.find() function doesn't need it

region=KcsCaptureRegion2D.CaptureRegion2D()
region.SetInside()

# Set the scope of searching - an entire drawing or draw a rectangle


answer2 = kcs_ui.answer_req("Entire drawing? "," Replace the texts in the entire
drawing ?")
if answer2 == kcs_util.yes():
#if the handle is not defined, the extent of the entire drawing is displayed:
region.SetRectangle(kcs_draft.element_extent_get())
if answer2 == kcs_util.no():
point1 = KcsPoint2D.Point2D()
point2 = KcsPoint2D.Point2D()
resp, point1 = kcs_ui.point2D_req("First point", point1)# request user for point
if resp == kcs_util.ok():
cursor = KcsCursorType.CursorType() # Set the cursor to rubber rectangle
cursor.SetRubberRectangle(point1)
stat = KcsStat_point2D_req.Stat_point2D_req()
stat.SetCursorType(cursor)
resp, point2 = kcs_ui.point2D_req("Second point", point2,stat)
if resp == kcs_util.ok():
rectangle = KcsRectangle2D.Rectangle2D(point1,point2)
region.SetRectangle(rectangle)
if resp <> kcs_util.ok():
exit()
if resp <> kcs_util.ok():
exit()

if answer2 == kcs_util.cancel():
exit()

region.SetNoCut()
try:
# Identify all existing texts in the region
handle_Text = kcs_draft.text_capture(region)
except:
kcs_ui.message_noconfirm("No texts found!")
exit()
else:
59
Proiectarea asistată de calculator a echipamentelor UIP
# for each found texts in the region do loop:
for handle in handle_Text[1:]:
kcs_draft.text_properties_get(handle,text)
if string.find(text.GetString(),note_text ) >= 0:# if found continue
# if the text to be replaced is at the beginning
if string.find(text.GetString(),note_text ) == 0:
new_note_text = note_text_new + text.GetString()[len(note_text):]
# if the text to be replaced is at the end
if string.find(text.GetString(),note_text ) == len(text.GetString()) -
len(note_text):
new_note_text =
text.GetString()[:int(string.find(text.GetString(),note_text ))] + note_text_new
# if the text to be replaced is at the middle
if (string.find(text.GetString(),note_text ) > 0) and
(string.find(text.GetString(),note_text ) < len(text.GetString()) - len(note_text)):
new_note_text =
text.GetString()[:int(string.find(text.GetString(),note_text ))] + note_text_new +
text.GetString()[int(string.find(text.GetString(),note_text ))+len(note_text):]
if confirm == "no": #if no confirmation is set at the beginning
# delete the old text and set the properties of the new one
kcs_draft.element_delete(handle)
new_note_text1 = KcsText.Text()
#new_note_text1.SetFontId(text.GetFontId())
new_note_text1.SetLayer(text.GetLayer())
new_note_text1.SetHeight(text.GetHeight())
new_note_text1.SetRotation(text.GetRotation())
new_note_text1.SetPosition(text.GetPosition())
new_note_text1.SetColour(text.GetColour())
new_note_text1.SetString(new_note_text)
kcs_draft.text_new(new_note_text1)
else: # if confirmation is needed
rectangle = kcs_draft.element_extent_get(handle)
rectangle.Corner1.X = rectangle.Corner1.X - 20
rectangle.Corner1.Y = rectangle.Corner1.Y - 20
rectangle.Corner2.X = rectangle.Corner2.X + 20
rectangle.Corner2.Y = rectangle.Corner2.Y + 20
kcs_draft.dwg_zoom(rectangle) # zoom to the found text
answer = kcs_ui.answer_req("Replace?","Replace text?")
if answer == kcs_util.yes():
# delete the old text and set the properties of the new one
kcs_draft.element_delete(handle)
new_note_text1 = KcsText.Text()
#new_note_text1.SetFontId(text.GetFontId())
new_note_text1.SetLayer(text.GetLayer())
new_note_text1.SetHeight(text.GetHeight())
new_note_text1.SetRotation(text.GetRotation())
new_note_text1.SetPosition(text.GetPosition())
new_note_text1.SetColour(text.GetColour())
new_note_text1.SetString(new_note_text)
kcs_draft.text_new(new_note_text1)
if answer == kcs_util.cancel():
60
Lucrarea nr. 4
break
if index == 1 : question = "Continue searching without confirmation?"
if index == 2 : question = "Continue searching with confirmation??"
answer = kcs_ui.answer_req("Continue?",question)
if (answer == kcs_util.no()) or (answer == kcs_util.cancel()):
break

except:
pass
def run(*args):
fd_change_text()

7. Se lansează din nou aplicaţia Drafting (START > All Programs >
Tribon M3 > Drafting) şi se inspectează bara de instrumente, aflată sub bara
de meniuri (fig. 4.19);

Fig. 4.19. Bara de instrumente modificată a aplicaţiei Drafting

Referitor la structura barei de instrumente a aplicaţiei Drafting se


impun următoarele comentarii:
 bara de instrumente standardizate conţine funcţii predefinite ale
sistemului TRIBON M3, accesarea acestora prin intermediul butoanelor
specifice realizându-se în baza unor coduri unice; fiecare aplicaţie TRIBON
M3 are definite propriile coduri de funcţii predefinite care sunt scrise în
fişierele de tip kcs_gui_nume-aplicaţie.py din directorul [Lib]
(C:\Tribon\M3\Vitesse\Lib) (ex. pentru aplicaţia Drafting, codurile funcţiilor
predefinite se regăsesc în fişierul kcs_gui_drafting.py);
 bara de instrumente personalizată conţine nume de funcţii definite
de către utilizator care substituie codurile funcţiilor predefinite şi cărora
trebuie să le fie asignate fişiere de tip nume-funcţie.py, stocate în directorul
[Lib] (C:\Tribon\M3\Vitesse\Lib);
 indiferent de tipul barei de instrumente programate, trebuie creat
subdirectorul de pictograme a butoanelor, cu localizare în directorul [Trigger]
(C:\Tribon\M3\Vitesse\Trigger) şi în care trebuie stocate imaginile asignate
acestora (fişiere de tip .bmp sau .ico).

61
Proiectarea asistată de calculator a echipamentelor UIP
 barele de instrumente utilizator se adaugă automat barei principale
de meniuri, în meniul View, sub denumirea User Toobars, aşa cum se observă
în fig. 4.20.

Fig. 4.20. Inserarea barelor de instrumente utilizator în bara principală de


meniuri

4.6.2. Lansarea funcţiilor utilizator prin aplicaţia VITESSE

Să se conceapă un program în limbajul de programare PYTHON care


să permită poziţionarea unui text în cadrul unui desen, prin intermediul
aplicaţiei VITESSE.

Rezolvare:

1. Cu ajutorul editorului de texte Notepad se editează fişierul


place_text.py, conform indicaţiilor din tabelul 4.9 şi se salvează în directorul
[Lib] (C:\Tribon\M3\Vitesse\Lib);

Tabel 4.9. Program pentru plasarea unui text în desenul curent [3]
import kcs_draft
import kcs_ui
import kcs_util
import KcsPoint2D
import CommonSample
try:
kcs_ui.message_confirm('This script will create a text.')
62
Lucrarea nr. 4
text = ''
linenr = 1
while 1:
resp, line = kcs_ui.string_req('Enter text line %d, OC to complete:' % linenr, '')
if len(text) == 0:
text = line
else:
text = text + '\n' + line
if kcs_ui.answer_req('Text entering', 'Next line?') != kcs_util.yes():
break
elif resp == kcs_util.cancel():
text = ''
break
linenr = linenr + 1
point = KcsPoint2D.Point2D()
if len(text) > 0:
try:
resp, point = kcs_ui.point2D_req('Select insertion point', point)
if resp == kcs_util.ok():
try:
kcs_draft.text_new(text, point)
except:
CommonSample.ReportTribonError(kcs_draft)
except:
CommonSample.ReportTribonError(kcs_ui)
else:
kcs_ui.message_noconfirm('Text not defined!')
except:
pass

2. Se lansează aplicaţia Drafting (START > All Programs > Tribon M3


> Drafting);
3. Se activează bara de instrumente a aplicaţiei VITESSE (View >
Toolbars > Vitesse) (în bara de instrumente apare bara aplicaţiei VITESSE,
aşa cum se observă în fig. 4.21);

Fig. 4.21. Bara de instrumente a aplicaţiei VITESSE

4. Se iniţiază fişierul place_text.py, prin acţionarea butonului


(Vitesse) şi indicarea căii spre fişier (C:\ Tribon\ M3\ Vitesse\ Lib\ place_text.
py);
5. Se lansează programul prin acţionarea butonului (Run Script); în
primă fază, se deschide o fereastră informativă care precizează faptul că va fi
creat un text (fig. 4.22);
63
Proiectarea asistată de calculator a echipamentelor UIP

Fig. 4.22. Fereastra informativă a programului

6. În continuare, programul solicită scrierea textului care va fi plasat în


desen (fig. 4.23);

Fig. 4.23. Fereastra de introducere a textului

7. Mai departe, programul interoghează utilizatorul dacă introduce alt


text sau nu (fig. 4.24);

Fig. 4.24. Fereastra de introducere a următoarei linii de text

8. În încheiere, se solicită specificarea punctului de inserţie în care


textul „abracadabra” va fi plasat, iar rularea programului se finalizează.
Exemple de programe scrise în limbajul PYTHON, care pot fi lansate
cu ajutorul aplicaţiei VITESSE, se pot găsei în directorul [Examples]
(C:\Tribon\M3\Vitesse\Examples).

Bibliografie selectivă
[1] ***, Training Guide Tribon M3. Hull Drafting, Tribon Solutions Ltd., 2004
[2] ***, http://www.flowdesign.info/setting_custom_toolbars.php, FlowDesign Marine Soluti-
ons Ltd., (data accesării: 23.03.2016)
[3] ***, Tribon M3. Vitesse Examples, Tribon Solutions, 2004

64

S-ar putea să vă placă și