forked from geosim/QAD
-
Notifications
You must be signed in to change notification settings - Fork 13
/
qad_dim.py
5982 lines (5048 loc) · 311 KB
/
qad_dim.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# -*- coding: utf-8 -*-
"""
/***************************************************************************
QAD Quantum Aided Design plugin ok
classe per la gestione delle quote
-------------------
begin : 2014-02-20
copyright : iiiii
email : hhhhh
developers : bbbbb aaaaa ggggg
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
"""
from qgis.PyQt.QtCore import *
from qgis.PyQt.QtGui import *
from qgis.core import *
from qgis.gui import *
import qgis.utils
import os
import codecs
import math
import sys
from .qad_msg import QadMsg
from . import qad_utils
from .qad_line import getBoundingPtsOnOnInfinityLine, QadLine
from .qad_arc import QadArc
from .qad_geom_relations import *
from . import qad_stretch_fun
from . import qad_layer
from . import qad_label
from .qad_entity import *
from .qad_variables import QadVariables
from .qad_multi_geom import fromQgsGeomToQadGeom, fromQadGeomToQgsGeom
"""
La classe quotatura é composta da tre layer: testo, linea, simbolo con lo stesso sistema di coordinate.
Il layer testo deve avere tutte le caratteristiche del layer testo di QAD ed in più:
- il posizionamento dell'etichetta con modalita "Intorno al punto" con distanza = 0
(che vuol dire punto di inserimento in basso a sx)
- la dimensione del testo in unità mappa (la dimensione varia a seconda dello zoom).
- dimStyleFieldName = "dim_style"; nome del campo che contiene il nome dello stile di quota (opzionale)
- dimTypeFieldName = "dim_type"; nome del campo che contiene il tipo dello stile di quota (opzionale)
- l'opzione "Mostra etichette capovolte" deve essere su "sempre" nel tab "Etichette"->"Visualizzazione"
- rotFieldName = "rot"; nome del campo che contiene la rotazione del testo
- la rotazione deve essere letta dal campo indicato da rotFieldName
- idFieldName = "id"; nome del campo che contiene il codice della quota (opzionale)
- la rotazione deve essere derivata dal campo rotFieldName
- il font del carattere può essere derivata da un campo
- la dimensione del carattere può essere derivata da un campo
- il colore del testo può essere derivato da un campo (opzionale)
Il layer simbolo deve avere tutte le caratteristiche del layer simbolo di QAD ed in più:
- il simbolo freccia con rotazione 0 deve essere orizzontale con la freccia rivolta verso destra
ed il suo punto di inserimento deve essere sulla punta della freccia
- la dimensione del simbolo in unità mappa (la dimensione varia a seconda dello zoom),
impostare la dimensione del simbolo in modo che la larghezza della freccia sia 1 unità di mappa.
- componentFieldName = "type"; nome del campo che contiene il tipo di componente della quota (vedi QadDimComponentEnum) (opzionale)
- symbolFieldName = "block"; nome del campo che contiene il nome del simbolo (opzionale)
- idParentFieldName = "id_parent"; nome del campo che contiene il codice del testo della quota (opzionale)
- scaleFieldName = "scale"; nome del campo che contiene il fattore di scala del simbolo (opzionale)
se usato usare lo stile "singolo simbolo" (unico che consente di impostare la scala come diametro scala)
la scala deve essere impostata su attraverso Stile->avanzato->campo di dimensione della scala-><nome del campo scala>
la modalità di scala deve essere impostata su attraverso Stile->avanzato->campo di dimensione della scala->diametro scala
- rotFieldName = "rot"; nome del campo che contiene la rotazione del simbolo
la rotazione deve essere letta dal campo indicato da rotFieldName (360-rotFieldName)
Il layer linea deve avere tutte le caratteristiche del layer linea ed in più:
- componentFieldName = "type"; nome del campo che contiene il tipo di componente della quota (vedi QadDimComponentEnum) (opzionale)
- lineTypeFieldName = "line_type"; nome del campo che contiene il tipolinea (opzionale)
- colorFieldName = "color"; nome del campo che contiene il colore 'r,g,b,alpha'; alpha é opzionale (0=trasparente, 255=opaco) (opzionale)
- idParentFieldName = "id_parent"; nome del campo che contiene il codice del testo della quota (opzionale)
"""
#===============================================================================
# QadDimTypeEnum class.
#===============================================================================
class QadDimTypeEnum():
ALIGNED = "AL" # quota lineare allineata ai punti di origine delle linee di estensione
ANGULAR = "AN" # quota angolare, misura l'angolo tra i 3 punti o tra gli oggetti selezionati
BASE_LINE = "BL" # quota lineare, angolare o coordinata a partire dalla linea di base della quota precedente o di una quota selezionata
DIAMETER = "DI" # quota per il diametro di un cerchio o di un arco
LEADER = "LD" # crea una linea che consente di collegare un'annotazione ad una lavorazione
LINEAR = "LI" # quota lineare con una linea di quota orizzontale o verticale
RADIUS = "RA" # quota radiale, misura il raggio di un cerchio o di un arco selezionato e visualizza il testo di quota con un simbolo di raggio davanti
ARC_LENTGH = "AR" # quota per la lunghezza di un arco
#===============================================================================
# QadDimComponentEnum class.
#===============================================================================
class QadDimComponentEnum():
DIM_LINE1 = "D1" # linea di quota ("Dimension line 1")
DIM_LINE2 = "D2" # linea di quota ("Dimension line 2")
DIM_LINE_EXT1 = "X1" # estensione della linea di quota ("Dimension line eXtension 1")
DIM_LINE_EXT2 = "X2" # estensione della linea di quota ("Dimension line eXtension 2")
EXT_LINE1 = "E1" # prima linea di estensione ("Extension line 1")
EXT_LINE2 = "E2" # seconda linea di estensione ("Extension line 2")
LEADER_LINE = "L" # linea porta quota usata quando il testo é fuori dalla quota ("Leader")
ARC_LEADER_LINE = "AL" # linea porta quota usata per collegare il testo di quota con l'arco da quotare (vedi "dimarc" opzione "leader")
BLOCK1 = "B1" # primo blocco della freccia ("Block 1")
BLOCK2 = "B2" # secondo blocco della freccia ("Block 2")
LEADER_BLOCK = "LB" # blocco della freccia nel caso leader ("Leader Block")
ARC_BLOCK = "AB" # simbolo dell'arco ("Arc Block")
DIM_PT1 = "D1" # primo punto da quotare ("Dimension point 1")
DIM_PT2 = "D2" # secondo punto da quotare ("Dimension point 2")
TEXT_PT = "T" # punto del testo di quota ("Text")
CENTER_MARKER_LINE = "CL" # linea che definisce il marcatore del centro di un arco o di un cerchio
#===============================================================================
# QadDimStyleAlignmentEnum class.
#===============================================================================
class QadDimStyleAlignmentEnum():
HORIZONTAL = 0 # orizzontale
VERTICAL = 1 # verticale
ALIGNED = 2 # allineata
FORCED_ROTATION = 3 # rotazione forzata
#===============================================================================
# QadDimStyleTxtVerticalPosEnum class.
#===============================================================================
class QadDimStyleTxtVerticalPosEnum():
CENTERED_LINE = 0 # testo centrato alla linea di quota
ABOVE_LINE = 1 # testo sopra alla linea di quota ma nel caso la linea di quota non sia orizzontale
# e il testo sia dentro le linee di estensione e forzato orizzontale allora il testo diventa centrato
EXTERN_LINE = 2 # testo posizionato nella parte opposta ai punti di quotatura
BELOW_LINE = 4 # testo sotto alla linea di quota ma nel caso la linea di quota non sia orizzontale
# e il testo sia dentro le linee di estensione e forzato orizzontale allora il testo diventa centrato
#===============================================================================
# QadDimStyleTxtHorizontalPosEnum class.
#===============================================================================
class QadDimStyleTxtHorizontalPosEnum():
CENTERED_LINE = 0 # testo centrato alla linea di quota
FIRST_EXT_LINE = 1 # testo vicino alla prima linea di estensione
SECOND_EXT_LINE = 2 # testo vicino alla seconda linea di estensione
FIRST_EXT_LINE_UP = 3 # testo sopra e allineato alla prima linea di estensione
SECOND_EXT_LINE_UP = 4 # testo sopra e allineato alla seconda linea di estensione
#===============================================================================
# QadDimStyleTxtRotEnum class.
#===============================================================================
class QadDimStyleTxtRotModeEnum():
HORIZONTAL = 0 # testo orizzontale
ALIGNED_LINE = 1 # testo allineato con la linea di quota
ISO = 2 # testo allineato con la linea di quota se tra le linee di estensione,
# altrimenti testo orizzontale
FORCED_ROTATION = 3 # testo con rotazione forzata
#===============================================================================
# QadDimStyleArcSymbolPosEnum class.
#===============================================================================
class QadDimStyleArcSymbolPosEnum():
BEFORE_TEXT = 0 # simbolo prima del testo
ABOVE_TEXT = 1 # simbolo sopra il testo
NONE = 2 # niente simbolo
#===============================================================================
# QadDimStyleArcSymbolPosEnum class.
#===============================================================================
class QadDimStyleTxtDirectionEnum():
SX_TO_DX = 0 # da sinistra a destra
DX_TO_SX = 1 # da destra a sinistra
#===============================================================================
# QadDimStyleTextBlocksAdjustEnum class.
#===============================================================================
class QadDimStyleTextBlocksAdjustEnum():
BOTH_OUTSIDE_EXT_LINES = 0 # sposta testo e frecce fuori dalle linee di estensione
FIRST_BLOCKS_THEN_TEXT = 1 # sposta prima le frecce poi, se non basta, anche il testo
FIRST_TEXT_THEN_BLOCKS = 2 # sposta prima il testo poi, se non basta, anche le frecce
WHICHEVER_FITS_BEST = 3 # Sposta indistintamente il testo o le frecce (l'oggetto che si adatta meglio)
#===============================================================================
# QadDim dimension style class
#===============================================================================
class QadDimStyle():
def __init__(self, dimStyle = None):
self.name = "standard" # nome dello stile
self.description = ""
self.path = "" # percorso e nome del file in cui è stato salvato/caricato
self.dimType = QadDimTypeEnum.ALIGNED # tipo di quotatura
# testo di quota
self.textPrefix = "" # prefisso per il testo della quota
self.textSuffix = "" # suffisso per il testo della quota
self.textSuppressLeadingZeros = False # per sopprimere o meno gli zero all'inizio del testo
self.textDecimalZerosSuppression = True # per sopprimere gli zero finali nei decimali
self.textHeight = 1.0 # altezza testo (DIMTXT) in unità di mappa
self.textVerticalPos = QadDimStyleTxtVerticalPosEnum.ABOVE_LINE # posizione verticale del testo rispetto la linea di quota (DIMTAD)
self.textHorizontalPos = QadDimStyleTxtHorizontalPosEnum.CENTERED_LINE # posizione orizzontale del testo rispetto la linea di quota (DIMTAD)
self.textOffsetDist = 0.5 # distanza aggiunta intorno al testo quando per inserirlo viene spezzata la linea di quota (DIMGAP)
self.textRotMode = QadDimStyleTxtRotModeEnum.ALIGNED_LINE # modalità di rotazione del testo (DIMTIH e DIMTOH)
self.textForcedRot = 0.0 # rotazione forzata del testo
self.textDecimals = 2 # numero di decimali (DIMDEC)
self.textDecimalSep = "." # Separatore dei decimali (DIMDSEP)
self.textFont = "Arial" # nome del font di testo (DIMTXSTY)
self.textColor = "255,255,255,255" # Colore per i testi della quota (DIMCLRT); bianco con opacità totale
self.textDirection = QadDimStyleTxtDirectionEnum.SX_TO_DX # specifica la direzione del testo di quota (DIMTXTDIRECTION) 0 = da sx a dx, 1 = da dx a sx
self.arcSymbPos = QadDimStyleArcSymbolPosEnum.BEFORE_TEXT # disegna o meno il simbolo dell'arco con DIMARC (DIMARCSYM).
# linee di quota
self.dimLine1Show = True # Mostra o nasconde la prima linea di quota (DIMSD1)
self.dimLine2Show = True # Mostra o nasconde la seconda linea di quota (DIMSD2)
self.dimLineLineType = "continuous" # Tipo di linea per le linee di quota (DIMLTYPE)
self.dimLineColor = "255,255,255,255" # Colore per le linee di quota (DIMCLRD); bianco con opacità totale
self.dimLineSpaceOffset = 3.75 # Controlla la spaziatura delle linee di quota nelle quote da linea di base (DIMDLI)
self.dimLineOffsetExtLine = 0.0 # distanza della linea di quota oltre la linea di estensione (DIMDLE)
# simboli per linee di quota
# il blocco per la freccia é una freccia verso destra con il punto di inserimento sulla punta della freccia
self.block1Name = "triangle2" # nome del simbolo da usare come punta della freccia sulla prima linea di quota (DIMBLK1)
self.block2Name = "triangle2" # nome del simbolo da usare come punta della freccia sulla seconda linea di quota (DIMBLK2)
self.blockLeaderName = "triangle2" # nome del simbolo da usare come punta della freccia sulla linea della direttrice (DIMLDRBLK)
self.blockWidth = 0.5 # larghezza del simbolo (in orizzontale) quando la dimensione in unità di mappa = 1 (vedi "triangle2")
self.blockScale = 1.0 # scala della dimensione del simbolo (DIMASZ)
self.centerMarkSize = 0.0 # disegna o meno il marcatore di centro o le linee d'asse per le quote create con
# DIMCENTER, DIMDIAMETER, e DIMRADIUS (DIMCEN).
# 0 = niente, > 0 dimensione marcatore di centro, < 0 dimensione linee d'asse
# adattamento del testo e delle frecce
self.textBlockAdjust = QadDimStyleTextBlocksAdjustEnum.WHICHEVER_FITS_BEST # (DIMATFIT)
self.blockSuppressionForNoSpace = False # Sopprime le punte della frecce se non c'é spazio sufficiente all'interno delle linee di estensione (DIMSOXD)
# linee di estensione
self.extLine1Show = True # Mostra o nasconde la prima linea di estensione (DIMSE1)
self.extLine2Show = True # Mostra o nasconde la seconda linea di estensione (DIMSE2)
self.extLine1LineType = "continuous" # Tipo di linea per la prima linea di estensione (DIMLTEX1)
self.extLine2LineType = "continuous" # Tipo di linea per la seconda linea di estensione (DIMLTEX2)
self.extLineColor = "255,255,255,255" # Colore per le linee di estensione (DIMCLRE); bianco con opacità totale
self.extLineOffsetDimLine = 0.0 # distanza della linea di estensione oltre la linea di quota (DIMEXE)
self.extLineOffsetOrigPoints = 0.0 # distanza della linea di estensione dai punti da quotare (DIMEXO)
self.extLineIsFixedLen = False # Attiva lunghezza fissa delle line di estensione (DIMFXLON)
self.extLineFixedLen = 1.0 # lunghezza fissa delle line di estensione (DIMFXL) dalla linea di quota
# al punto da quotare spostato di extLineOffsetOrigPoints
# (la linea di estensione non va oltre il punto da quotare)
# layer e loro caratteristiche
# devo allocare i campi a livello di classe QadDimStyle perché QgsFeature.setFields usa solo il puntatore alla lista fields
# che, se allocata privatamente in qualsiasi funzione, all'uscita della funzione verrebbe distrutta
self.textualLayerName = None # nome layer per memorizzare il testo della quota
self.__textualLayer = None # layer per memorizzare il testo della quota
self.__textFields = None
self.__textualFeaturePrototype = None
self.linearLayerName = None # nome layer per memorizzare le linee della quota
self.__linearLayer = None # layer per memorizzare le linee della quota
self.__lineFields = None
self.__linearFeaturePrototype = None
self.symbolLayerName = None # nome layer per memorizzare i blocchi delle frecce della quota
self.__symbolLayer = None # layer per memorizzare i blocchi delle frecce della quota
self.__symbolFields = None
self.__symbolFeaturePrototype = None
self.componentFieldName = "type" # nome del campo che contiene il tipo di componente della quota (vedi QadDimComponentEnum)
self.lineTypeFieldName = "line_type" # nome del campo che contiene il tipolinea
self.colorFieldName = "color" # nome del campo che contiene il colore 'r,g,b,alpha'; alpha é opzionale (0=trasparente, 255=opaco)
self.idFieldName = "id" # nome del campo che contiene il codice del della quota nel layer di tipo testo
self.idParentFieldName = "id_parent" # nome del campo che contiene il codice della quota nei layer simbolo e linea
self.dimStyleFieldName = "dim_style" # nome del campo che contiene il nome dello stile di quota
self.dimTypeFieldName = "dim_type" # nome del campo che contiene il tipo dello stile di quota
self.symbolFieldName = "block" # nome del campo che contiene il nome del simbolo
self.scaleFieldName = "scale" # nome del campo che contiene la dimensione
self.rotFieldName = "rot" # nome del campo che contiene rotazione in gradi
if dimStyle is None:
return
self.set(dimStyle)
#============================================================================
# FUNZIONI GENERICHE - INIZIO
#============================================================================
def set(self, dimStyle):
self.name = dimStyle.name
self.description = dimStyle.description
self.path = dimStyle.path
self.dimType = dimStyle.dimType
# testo di quota
self.textPrefix = dimStyle.textPrefix
self.textSuffix = dimStyle.textSuffix
self.textSuppressLeadingZeros = dimStyle.textSuppressLeadingZeros
self.textDecimaZerosSuppression = dimStyle.textDecimalZerosSuppression
self.textHeight = dimStyle.textHeight
self.textVerticalPos = dimStyle.textVerticalPos
self.textHorizontalPos = dimStyle.textHorizontalPos
self.textOffsetDist = dimStyle.textOffsetDist
self.textRotMode = dimStyle.textRotMode
self.textForcedRot = dimStyle.textForcedRot
self.textDecimals = dimStyle.textDecimals
self.textDecimalSep = dimStyle.textDecimalSep
self.textFont = dimStyle.textFont
self.textColor = dimStyle.textColor
self.textDirection = dimStyle.textDirection
self.arcSymbPos = dimStyle.arcSymbPos
# linee di quota
self.dimLine1Show = dimStyle.dimLine1Show
self.dimLine2Show = dimStyle.dimLine2Show
self.dimLineLineType = dimStyle.dimLineLineType
self.dimLineColor = dimStyle.dimLineColor
self.dimLineSpaceOffset = dimStyle.dimLineSpaceOffset
self.dimLineOffsetExtLine = dimStyle.dimLineOffsetExtLine
# simboli per linee di quota
self.block1Name = dimStyle.block1Name
self.block2Name = dimStyle.block2Name
self.blockLeaderName = dimStyle.blockLeaderName
self.blockWidth = dimStyle.blockWidth
self.blockScale = dimStyle.blockScale
self.blockSuppressionForNoSpace = dimStyle.blockSuppressionForNoSpace
self.centerMarkSize = dimStyle.centerMarkSize
# adattamento del testo e delle frecce
self.textBlockAdjust = dimStyle.textBlockAdjust
# linee di estensione
self.extLine1Show = dimStyle.extLine1Show
self.extLine2Show = dimStyle.extLine2Show
self.extLine1LineType = dimStyle.extLine1LineType
self.extLine2LineType = dimStyle.extLine2LineType
self.extLineColor = dimStyle.extLineColor
self.extLineOffsetDimLine = dimStyle.extLineOffsetDimLine
self.extLineOffsetOrigPoints = dimStyle.extLineOffsetOrigPoints
self.extLineIsFixedLen = dimStyle.extLineIsFixedLen
self.extLineFixedLen = dimStyle.extLineFixedLen
# layer e loro caratteristiche
self.textualLayerName = dimStyle.textualLayerName
self.__textualLayer = dimStyle.__textualLayer
self.__textFields = dimStyle.__textFields
self.__textualFeaturePrototype = dimStyle.__textualFeaturePrototype
self.linearLayerName = dimStyle.linearLayerName
self.__linearLayer = dimStyle.__linearLayer
self.__lineFields = dimStyle.__lineFields
self.__linearFeaturePrototype = dimStyle.__linearFeaturePrototype
self.symbolLayerName = dimStyle.symbolLayerName
self.__symbolLayer = dimStyle.__symbolLayer
self.__symbolFields = dimStyle.__symbolFields
self.__symbolFeaturePrototype = dimStyle.__symbolFeaturePrototype
self.componentFieldName = dimStyle.componentFieldName
self.symbolFieldName = dimStyle.symbolFieldName
self.lineTypeFieldName = dimStyle.lineTypeFieldName
self.colorFieldName = dimStyle.colorFieldName
self.idFieldName = dimStyle.idFieldName
self.idParentFieldName = dimStyle.idParentFieldName
self.dimStyleFieldName = dimStyle.dimStyleFieldName
self.dimTypeFieldName = dimStyle.dimTypeFieldName
self.scaleFieldName = dimStyle.scaleFieldName
self.rotFieldName = dimStyle.rotFieldName
#============================================================================
# getPropList
#============================================================================
def getPropList(self):
proplist = dict() # dizionario di nome con lista [descrizione, valore]
propDescr = QadMsg.translate("Dimension", "Name")
proplist["name"] = [propDescr, self.name]
propDescr = QadMsg.translate("Dimension", "Description")
proplist["description"] = [propDescr, self.description]
propDescr = QadMsg.translate("Dimension", "File path")
proplist["path"] = [propDescr, self.path]
# testo di quota
value = self.textPrefix
if len(self.textPrefix) > 0:
value += "<>"
value += self.textSuffix
propDescr = QadMsg.translate("Dimension", "Text prefix and suffix")
proplist["textPrefix"] = [propDescr, value]
propDescr = QadMsg.translate("Dimension", "Leading zero suppression")
proplist["textSuppressLeadingZeros"] = [propDescr, self.textSuppressLeadingZeros]
propDescr = QadMsg.translate("Dimension", "Trailing zero suppression")
proplist["textDecimalZerosSuppression"] = [propDescr, self.textDecimalZerosSuppression]
propDescr = QadMsg.translate("Dimension", "Text height")
proplist["textHeight"] = [propDescr, self.textHeight]
propDescr = QadMsg.translate("Dimension", "Vertical text position")
proplist["textVerticalPos"] = [propDescr, self.textVerticalPos]
propDescr = QadMsg.translate("Dimension", "Horizontal text position")
proplist["textHorizontalPos"] = [propDescr, self.textHorizontalPos]
propDescr = QadMsg.translate("Dimension", "Text offset")
proplist["textOffsetDist"] = [propDescr, self.textOffsetDist]
propDescr = QadMsg.translate("Dimension", "Text alignment")
proplist["textRotMode"] = [propDescr, self.textRotMode]
propDescr = QadMsg.translate("Dimension", "Fixed text rotation")
proplist["textForcedRot"] = [propDescr, self.textForcedRot]
propDescr = QadMsg.translate("Dimension", "Precision")
proplist["textDecimals"] = [propDescr, self.textDecimals]
propDescr = QadMsg.translate("Dimension", "Decimal separator")
proplist["textDecimalSep"] = [propDescr, self.textDecimalSep]
propDescr = QadMsg.translate("Dimension", "Text font")
proplist["textFont"] = [propDescr, self.textFont]
propDescr = QadMsg.translate("Dimension", "Text color")
proplist["textColor"] = [propDescr, self.textColor]
if self.textDirection == QadDimStyleTxtDirectionEnum.SX_TO_DX:
value = QadMsg.translate("Dimension", "From left to right")
else:
value = QadMsg.translate("Dimension", "From right to left")
propDescr = QadMsg.translate("Dimension", "Text direction")
proplist["textDirection"] = [propDescr, value]
propDescr = QadMsg.translate("Dimension", "Arc len. symbol")
proplist["arcSymbPos"] = [propDescr, self.arcSymbPos]
# linee di quota
propDescr = QadMsg.translate("Dimension", "Dim line 1 visible")
proplist["dimLine1Show"] = [propDescr, self.dimLine1Show]
propDescr = QadMsg.translate("Dimension", "Dim line 2 visible")
proplist["dimLine2Show"] = [propDescr, self.dimLine2Show]
propDescr = QadMsg.translate("Dimension", "Dim line linetype")
proplist["dimLineLineType"] = [propDescr, self.dimLineLineType]
propDescr = QadMsg.translate("Dimension", "Dim line color")
proplist["dimLineColor"] = [propDescr, self.dimLineColor]
propDescr = QadMsg.translate("Dimension", "Offset from origin")
proplist["dimLineSpaceOffset"] = [propDescr, self.dimLineSpaceOffset]
propDescr = QadMsg.translate("Dimension", "Dim line extension")
proplist["dimLineOffsetExtLine"] = [propDescr, self.dimLineOffsetExtLine]
# simboli per linee di quota
propDescr = QadMsg.translate("Dimension", "Arrow 1")
proplist["block1Name"] = [propDescr, self.block1Name]
propDescr = QadMsg.translate("Dimension", "Arrow 2")
proplist["block2Name"] = [propDescr, self.block2Name]
propDescr = QadMsg.translate("Dimension", "Leader arrow")
proplist["blockLeaderName"] = [propDescr, self.blockLeaderName]
propDescr = QadMsg.translate("Dimension", "Arrowhead width")
proplist["blockWidth"] = [propDescr, self.blockWidth]
propDescr = QadMsg.translate("Dimension", "Arrowhead scale")
proplist["blockScale"] = [propDescr, self.blockScale]
propDescr = QadMsg.translate("Dimension", "Center mark size")
proplist["centerMarkSize"] = [propDescr, self.centerMarkSize]
# adattamento del testo e delle frecce
propDescr = QadMsg.translate("Dimension", "Fit: arrows and text")
proplist["textBlockAdjust"] = [propDescr, self.textBlockAdjust]
propDescr = QadMsg.translate("Dimension", "Suppress arrows for lack of space")
proplist["blockSuppressionForNoSpace"] = [propDescr, self.blockSuppressionForNoSpace]
# linee di estensione
propDescr = QadMsg.translate("Dimension", "Ext. line 1 visible")
proplist["extLine1Show"] = [propDescr, self.extLine1Show]
propDescr = QadMsg.translate("Dimension", "Ext. line 2 visible")
proplist["extLine2Show"] = [propDescr, self.extLine2Show]
propDescr = QadMsg.translate("Dimension", "Ext. line 1 linetype")
proplist["extLine1LineType"] = [propDescr, self.extLine1LineType]
propDescr = QadMsg.translate("Dimension", "Ext. line 2 linetype")
proplist["extLine2LineType"] = [propDescr, self.extLine2LineType]
propDescr = QadMsg.translate("Dimension", "Ext. line color")
proplist["extLineColor"] = [propDescr, self.extLineColor]
propDescr = QadMsg.translate("Dimension", "Ext. line extension")
proplist["extLineOffsetDimLine"] = [propDescr, self.extLineOffsetDimLine]
propDescr = QadMsg.translate("Dimension", "Ext. line offset")
proplist["extLineOffsetOrigPoints"] = [propDescr, self.extLineOffsetOrigPoints]
propDescr = QadMsg.translate("Dimension", "Fixed length ext. line activated")
proplist["extLineIsFixedLen"] = [propDescr, self.extLineIsFixedLen]
propDescr = QadMsg.translate("Dimension", "Fixed length ext. line")
proplist["extLineFixedLen"] = [propDescr, self.extLineFixedLen]
# layer e loro caratteristiche
propDescr = QadMsg.translate("Dimension", "Layer for dim texts")
proplist["textualLayerName"] = [propDescr, self.textualLayerName]
propDescr = QadMsg.translate("Dimension", "Layer for dim lines")
proplist["linearLayerName"] = [propDescr, self.linearLayerName]
propDescr = QadMsg.translate("Dimension", "Layer for dim arrows")
proplist["symbolLayerName"] = [propDescr, self.symbolLayerName]
propDescr = QadMsg.translate("Dimension", "Field for component type")
proplist["componentFieldName"] = [propDescr, self.componentFieldName]
propDescr = QadMsg.translate("Dimension", "Field for linetype")
proplist["lineTypeFieldName"] = [propDescr, self.lineTypeFieldName]
propDescr = QadMsg.translate("Dimension", "Field for color")
proplist["colorFieldName"] = [propDescr, self.colorFieldName]
propDescr = QadMsg.translate("Dimension", "Field for dim ID in texts")
proplist["idFieldName"] = [propDescr, self.idFieldName]
propDescr = QadMsg.translate("Dimension", "Field for dim ID in lines and arrows")
proplist["idParentFieldName"] = [propDescr, self.idParentFieldName]
propDescr = QadMsg.translate("Dimension", "Field for dim style name")
proplist["dimStyleFieldName"] = [propDescr, self.dimStyleFieldName]
propDescr = QadMsg.translate("Dimension", "Field for dim type")
proplist["dimTypeFieldName"] = [propDescr, self.dimTypeFieldName]
propDescr = QadMsg.translate("Dimension", "Field for symbol name")
proplist["symbolFieldName"] = [propDescr, self.symbolFieldName]
propDescr = QadMsg.translate("Dimension", "Field for arrows scale")
proplist["scaleFieldName"] = [propDescr, self.scaleFieldName]
propDescr = QadMsg.translate("Dimension", "Field for arrows rotation")
proplist["rotFieldName"] = [propDescr, self.rotFieldName]
return proplist
#============================================================================
# getLayer
#============================================================================
def getLayer(self, layerName):
if layerName is not None:
layerList = QgsProject.instance().mapLayersByName(layerName)
if len(layerList) == 1:
return layerList[0]
return None
#============================================================================
# layer testuale
def getTextualLayer(self):
if self.__textualLayer is None:
self.__textualLayer = self.getLayer(self.textualLayerName)
return self.__textualLayer
def getTextualLayerFields(self):
if self.__textFields is None:
self.__textFields = None if self.getTextualLayer() is None else self.getTextualLayer().fields()
return self.__textFields
def getTextualFeaturePrototype(self):
if self.__textualFeaturePrototype is None:
if self.getTextualLayerFields() is not None:
self.__textualFeaturePrototype = QgsFeature(self.getTextualLayerFields())
self.initFeatureToDefautlValues(self.getTextualLayer(), self.__textualFeaturePrototype)
return self.__textualFeaturePrototype
#============================================================================
# layer lineare
def getLinearLayer(self):
if self.__linearLayer is None:
self.__linearLayer = self.getLayer(self.linearLayerName)
return self.__linearLayer
def getLinearLayerFields(self):
if self.__lineFields is None:
self.__lineFields = None if self.getLinearLayer() is None else self.getLinearLayer().fields()
return self.__lineFields
def getLinearFeaturePrototype(self):
if self.__linearFeaturePrototype is None:
if self.getLinearLayerFields() is not None:
self.__linearFeaturePrototype = QgsFeature(self.getLinearLayerFields())
self.initFeatureToDefautlValues(self.getLinearLayer(), self.__linearFeaturePrototype)
return self.__linearFeaturePrototype
#============================================================================
# layer simbolo
def getSymbolLayer(self):
if self.__symbolLayer is None:
self.__symbolLayer = self.getLayer(self.symbolLayerName)
return self.__symbolLayer
def getSymbolLayerFields(self):
if self.__symbolFields is None:
self.__symbolFields = None if self.getSymbolLayer() is None else self.getSymbolLayer().fields()
return self.__symbolFields
def getSymbolFeaturePrototype(self):
if self.__symbolFeaturePrototype is None:
if self.getSymbolLayerFields() is not None:
self.__symbolFeaturePrototype = QgsFeature(self.getSymbolLayerFields())
self.initFeatureToDefautlValues(self.getSymbolLayer(), self.__symbolFeaturePrototype)
return self.__symbolFeaturePrototype
#============================================================================
# initFeatureToDefautlValues
#============================================================================
def initFeatureToDefautlValues(self, layer, f):
# assegno i valori di default
provider = layer.dataProvider()
fields = f.fields()
for field in fields.toList():
i = fields.indexFromName(field.name())
f[field.name()] = provider.defaultValue(i)
#============================================================================
# getDefaultDimFilePath
#============================================================================
def getDefaultDimFilePath(self):
# ottiene il percorso automatico dove salvare/caricare il file della quotatura
# se esiste un progetto caricato il percorso è quello del progetto
prjFileInfo = QFileInfo(QgsProject.instance().fileName())
path = prjFileInfo.absolutePath()
if len(path) == 0:
# se non esiste un progetto caricato uso il percorso di installazione di qad
path = QDir.cleanPath(QgsApplication.qgisSettingsDirPath() + "python/plugins/qad")
return path + "/"
#============================================================================
# save
#============================================================================
def save(self, path = "", overwrite = True):
"""
Salva le impostazioni dello stile di quotatura in un file.
"""
if path == "" and self.path != "":
_path = self.path
else:
dir, base = os.path.split(path) # ritorna percorso e nome file con estensione
if dir == "":
dir = self.getDefaultDimFilePath()
else:
dir = QDir.cleanPath(dir) + "/"
name, ext = os.path.splitext(base)
if name == "":
name = self.name
if ext == "": # se non c'è estensione la aggiungo
ext = ".dim"
_path = dir + name + ext
if overwrite == False: # se non si vuole sovrascrivere
if os.path.exists(_path):
return False
dir = QFileInfo(_path).absoluteDir()
if not dir.exists():
os.makedirs(dir.absolutePath())
config = qad_utils.QadRawConfigParser(allow_no_value=True)
config.add_section("dimension_options")
config.set("dimension_options", "name", str(self.name))
config.set("dimension_options", "description", self.description)
config.set("dimension_options", "dimType", str(self.dimType))
# testo di quota
config.set("dimension_options", "textPrefix", str(self.textPrefix))
config.set("dimension_options", "textSuffix", str(self.textSuffix))
config.set("dimension_options", "textSuppressLeadingZeros", str(self.textSuppressLeadingZeros))
config.set("dimension_options", "textDecimalZerosSuppression", str(self.textDecimalZerosSuppression))
config.set("dimension_options", "textHeight", str(self.textHeight))
config.set("dimension_options", "textVerticalPos", str(self.textVerticalPos))
config.set("dimension_options", "textHorizontalPos", str(self.textHorizontalPos))
config.set("dimension_options", "textOffsetDist", str(self.textOffsetDist))
config.set("dimension_options", "textRotMode", str(self.textRotMode))
config.set("dimension_options", "textForcedRot", str(self.textForcedRot))
config.set("dimension_options", "textDecimals", str(self.textDecimals))
config.set("dimension_options", "textDecimalSep", str(self.textDecimalSep))
config.set("dimension_options", "textFont", str(self.textFont))
config.set("dimension_options", "textColor", str(self.textColor))
config.set("dimension_options", "textDirection", str(self.textDirection))
config.set("dimension_options", "arcSymbPos", str(self.arcSymbPos))
# linee di quota
config.set("dimension_options", "dimLine1Show", str(self.dimLine1Show))
config.set("dimension_options", "dimLine2Show", str(self.dimLine2Show))
config.set("dimension_options", "dimLineLineType", str(self.dimLineLineType))
config.set("dimension_options", "dimLineColor", str(self.dimLineColor))
config.set("dimension_options", "dimLineSpaceOffset", str(self.dimLineSpaceOffset))
config.set("dimension_options", "dimLineOffsetExtLine", str(self.dimLineOffsetExtLine))
# simboli per linee di quota
config.set("dimension_options", "block1Name", str(self.block1Name))
config.set("dimension_options", "block2Name", str(self.block2Name))
config.set("dimension_options", "blockLeaderName", str(self.blockLeaderName))
config.set("dimension_options", "blockWidth", str(self.blockWidth))
config.set("dimension_options", "blockScale", str(self.blockScale))
config.set("dimension_options", "blockSuppressionForNoSpace", str(self.blockSuppressionForNoSpace))
config.set("dimension_options", "centerMarkSize", str(self.centerMarkSize))
# adattamento del testo e delle frecce
config.set("dimension_options", "textBlockAdjust", str(self.textBlockAdjust))
# linee di estensione
config.set("dimension_options", "extLine1Show", str(self.extLine1Show))
config.set("dimension_options", "extLine2Show", str(self.extLine2Show))
config.set("dimension_options", "extLine1LineType", str(self.extLine1LineType))
config.set("dimension_options", "extLine2LineType", str(self.extLine2LineType))
config.set("dimension_options", "extLineColor", str(self.extLineColor))
config.set("dimension_options", "extLineOffsetDimLine", str(self.extLineOffsetDimLine))
config.set("dimension_options", "extLineOffsetOrigPoints", str(self.extLineOffsetOrigPoints))
config.set("dimension_options", "extLineIsFixedLen", str(self.extLineIsFixedLen))
config.set("dimension_options", "extLineFixedLen", str(self.extLineFixedLen))
# layer e loro caratteristiche
config.set("dimension_options", "textualLayerName", "" if self.textualLayerName is None else self.textualLayerName)
config.set("dimension_options", "linearLayerName", "" if self.linearLayerName is None else self.linearLayerName)
config.set("dimension_options", "symbolLayerName", "" if self.symbolLayerName is None else self.symbolLayerName)
config.set("dimension_options", "componentFieldName", str(self.componentFieldName))
config.set("dimension_options", "symbolFieldName", str(self.symbolFieldName))
config.set("dimension_options", "lineTypeFieldName", str(self.lineTypeFieldName))
config.set("dimension_options", "colorFieldName", str(self.colorFieldName))
config.set("dimension_options", "idFieldName", str(self.idFieldName))
config.set("dimension_options", "idParentFieldName", str(self.idParentFieldName))
config.set("dimension_options", "dimStyleFieldName", str(self.dimStyleFieldName))
config.set("dimension_options", "dimTypeFieldName", str(self.dimTypeFieldName))
config.set("dimension_options", "scaleFieldName", str(self.scaleFieldName))
config.set("dimension_options", "rotFieldName", str(self.rotFieldName))
with codecs.open(_path, 'w', 'utf-8') as configFile:
config.write(configFile)
self.path = _path
return True
#============================================================================
# load
#============================================================================
def load(self, path):
"""
Carica le impostazioni dello stile di quotatura da un file.
"""
if path is None or path == "":
return False
if os.path.dirname(path) == "": # path contiene solo il nome del file (senza dir)
_path = self.getDefaultDimFilePath()
_path = _path + path
else:
_path = path
if not os.path.exists(_path):
return False
config = qad_utils.QadRawConfigParser(allow_no_value=True)
config.read_file(codecs.open(_path, "r", "utf-8"))
#config.read(_path)
value = config.get("dimension_options", "name")
if value is not None:
self.name = value
value = config.get("dimension_options", "description")
if value is not None:
self.description = value
value = config.get("dimension_options", "dimType")
if value is not None:
self.dimType = value
# testo di quota
value = config.get("dimension_options", "textPrefix")
if value is not None:
self.textPrefix = value
value = config.get("dimension_options", "textSuffix")
if value is not None:
self.textSuffix = value
value = config.getboolean("dimension_options", "textSuppressLeadingZeros")
if value is not None:
self.textSuppressLeadingZeros = value
value = config.getboolean("dimension_options", "textDecimalZerosSuppression")
if value is not None:
self.textDecimalZerosSuppression = value
value = config.getfloat("dimension_options", "textHeight")
if value is not None:
self.textHeight = value
value = config.getint("dimension_options", "textVerticalPos")
if value is not None:
self.textVerticalPos = value
value = config.getint("dimension_options", "textHorizontalPos")
if value is not None:
self.textHorizontalPos = value
value = config.getfloat("dimension_options", "textOffsetDist")
if value is not None:
self.textOffsetDist = value
value = config.getint("dimension_options", "textRotMode")
if value is not None:
self.textRotMode = value
value = config.getfloat("dimension_options", "textForcedRot")
if value is not None:
self.textForcedRot = value
value = config.getint("dimension_options", "textDecimals")
if value is not None:
self.textDecimals = value
value = config.get("dimension_options", "textDecimalSep")
if value is not None:
self.textDecimalSep = value
value = config.get("dimension_options", "textFont")
if value is not None:
self.textFont = value
value = config.get("dimension_options", "textColor")
if value is not None:
self.textColor = value
value = config.getint("dimension_options", "textDirection")
if value is not None:
self.textDirection = value
value = config.getint("dimension_options", "arcSymbPos")
if value is not None:
self.arcSymbPos = value
# linee di quota
value = config.getboolean("dimension_options", "dimLine1Show")
if value is not None:
self.dimLine1Show = value
value = config.getboolean("dimension_options", "dimLine2Show")
if value is not None:
self.dimLine2Show = value
value = config.get("dimension_options", "dimLineLineType")
if value is not None:
self.dimLineLineType = value
value = config.get("dimension_options", "dimLineColor")
if value is not None:
self.dimLineColor = value
value = config.getfloat("dimension_options", "dimLineSpaceOffset")
if value is not None:
self.dimLineSpaceOffset = value
value = config.getfloat("dimension_options", "dimLineOffsetExtLine")
if value is not None:
self.dimLineOffsetExtLine = value
# simboli per linee di quota
value = config.get("dimension_options", "block1Name")
if value is not None:
self.block1Name = value
value = config.get("dimension_options", "block2Name")
if value is not None:
self.block2Name = value
value = config.get("dimension_options", "blockLeaderName")
if value is not None:
self.blockLeaderName = value
value = config.getfloat("dimension_options", "blockWidth")
if value is not None:
self.blockWidth = value
value = config.getfloat("dimension_options", "blockScale")
if value is not None:
self.blockScale = value
value = config.getboolean("dimension_options", "blockSuppressionForNoSpace")
if value is not None:
self.blockSuppressionForNoSpace = value
value = config.getfloat("dimension_options", "centerMarkSize")
if value is not None:
self.centerMarkSize = value
# adattamento del testo e delle frecce
value = config.getint("dimension_options", "textBlockAdjust")
if value is not None:
self.textBlockAdjust = value
# linee di estensione
value = config.getboolean("dimension_options", "extLine1Show")
if value is not None:
self.extLine1Show = value
value = config.getboolean("dimension_options", "extLine2Show")
if value is not None:
self.extLine2Show = value
value = config.get("dimension_options", "extLine1LineType")
if value is not None:
self.extLine1LineType = value
value = config.get("dimension_options", "extLine2LineType")
if value is not None:
self.extLine2LineType = value
value = config.get("dimension_options", "extLineColor")
if value is not None:
self.extLineColor = value
value = config.getfloat("dimension_options", "extLineOffsetDimLine")
if value is not None:
self.extLineOffsetDimLine = value
value = config.getfloat("dimension_options", "extLineOffsetOrigPoints")
if value is not None:
self.extLineOffsetOrigPoints = value
value = config.getboolean("dimension_options", "extLineIsFixedLen")
if value is not None:
self.extLineIsFixedLen = value
value = config.getfloat("dimension_options", "extLineFixedLen")
if value is not None:
self.extLineFixedLen = value
# layer e loro caratteristiche
value = config.get("dimension_options", "textualLayerName")
if value is not None:
self.textualLayerName = value
value = config.get("dimension_options", "linearLayerName")
if value is not None:
self.linearLayerName = value
value = config.get("dimension_options", "symbolLayerName")
if value is not None:
self.symbolLayerName = value
value = config.get("dimension_options", "componentFieldName")
if value is not None:
self.componentFieldName = value
value = config.get("dimension_options", "symbolFieldName")
if value is not None:
self.symbolFieldName = value
value = config.get("dimension_options", "lineTypeFieldName")
if value is not None:
self.lineTypeFieldName = value
value = config.get("dimension_options", "colorFieldName")
if value is not None:
self.colorFieldName = value
value = config.get("dimension_options", "idFieldName")
if value is not None:
self.idFieldName = value
value = config.get("dimension_options", "idParentFieldName")
if value is not None:
self.idParentFieldName = value
value = config.get("dimension_options", "dimStyleFieldName")
if value is not None:
self.dimStyleFieldName = value
value = config.get("dimension_options", "dimTypeFieldName")
if value is not None:
self.dimTypeFieldName = value
value = config.get("dimension_options", "scaleFieldName")
if value is not None:
self.scaleFieldName = value
value = config.get("dimension_options", "rotFieldName")
if value is not None:
self.rotFieldName = value
self.path = _path
return True
#============================================================================
# remove
#============================================================================
def remove(self):
"""
Cancella il file delle impostazioni dello stile di quotatura.
"""
currDimStyleName = QadVariables.get(QadMsg.translate("Environment variables", "DIMSTYLE"))
if self.name == currDimStyleName: # lo stile da cancellare è quello corrente
return False
if self.path is not None and self.path != "":
if os.path.exists(self.path):
try:
os.remove(self.path)
except:
return False
return True
#============================================================================
# rename
#============================================================================
def rename(self, newName):
"""
Rinomina il nome dello stile e del file delle impostazioni dello stile di quotatura.
"""
if newName == self.name: # nome uguale
return True
oldName = self.name
if self.path is not None or self.path != "":
if os.path.exists(self.path):
try:
dir, base = os.path.split(self.path)
dir = QDir.cleanPath(dir) + "/"
name, ext = os.path.splitext(base)
newPath = dir + "/" + newName + ext
os.rename(self.path, newPath)
self.path = newPath
self.name = newName
self.save()
except:
return False
else:
self.name = newName
currDimStyleName = QadVariables.get(QadMsg.translate("Environment variables", "DIMSTYLE"))
if oldName == currDimStyleName: # lo stile da rinominare è quello corrente
QadVariables.set(QadMsg.translate("Environment variables", "DIMSTYLE"), newName)
self.name = newName
return True
#============================================================================
# getInValidErrMsg
#============================================================================
def getInValidErrMsg(self):
"""