개정판 8056c558
dev issue #728: 소스 정리 및 C#언어로 개발
DTI_PID/SPPIDAutoModeling/ItemObject.cs | ||
---|---|---|
16 | 16 |
TEXT = 4, |
17 | 17 |
} |
18 | 18 | |
19 |
|
|
19 |
public class Group |
|
20 |
{ |
|
21 |
private List<Symbol> _SYMBOLS = new List<Symbol>(); |
|
22 |
private List<Line> _LINES = new List<Line>(); |
|
23 | ||
24 |
public List<Symbol> SYMBOLS { get => _SYMBOLS; set => _SYMBOLS = value; } |
|
25 |
public List<Line> LINES { get => _LINES; set => _LINES = value; } |
|
26 |
} |
|
20 | 27 | |
21 | 28 |
public class Drawing |
22 | 29 |
{ |
... | ... | |
24 | 31 |
private string _DWGNAME; |
25 | 32 |
private string _SIZE; |
26 | 33 |
private string _UNIT; |
27 |
private List<Symbol> _SYMBOLS; |
|
28 |
private List<Line> _LINES; |
|
29 |
private List<LineNumber> _LINENUMBERS; |
|
30 |
private List<Text> _TEXTS; |
|
34 |
private List<Symbol> _SYMBOLS = new List<Symbol>();
|
|
35 |
private List<Line> _LINES = new List<Line>();
|
|
36 |
private List<LineNumber> _LINENUMBERS = new List<LineNumber>();
|
|
37 |
private List<Text> _TEXTS = new List<Text>();
|
|
31 | 38 |
private Dictionary<string, List<PointdInfo>> _PipeRunPoint = new Dictionary<string, List<PointdInfo>>(); |
39 |
private List<Group> _GROUP = new List<Group>(); |
|
40 | ||
41 |
private double _WIDTH; |
|
42 |
private double _HEIGHT; |
|
32 | 43 | |
33 | 44 |
public string DWGNAME { get => _DWGNAME; set => _DWGNAME = value; } |
34 |
public string SIZE { get => _SIZE; set => _SIZE = value; } |
|
45 |
public string SIZE |
|
46 |
{ |
|
47 |
get { return _SIZE; } |
|
48 |
set |
|
49 |
{ |
|
50 |
_SIZE = value; |
|
51 |
SPPIDUtill.ConvertPointBystring(_SIZE, ref _WIDTH, ref _HEIGHT); |
|
52 |
} |
|
53 |
} |
|
35 | 54 |
public string UNIT { get => _UNIT; set => _UNIT = value; } |
36 | 55 |
public Dictionary<string, List<PointdInfo>> PipeRunPoint { get => _PipeRunPoint; set => _PipeRunPoint = value; } |
37 | 56 |
public List<Symbol> SYMBOLS { get => _SYMBOLS; set => _SYMBOLS = value; } |
38 | 57 |
public List<Line> LINES { get => _LINES; set => _LINES = value; } |
39 | 58 |
public List<LineNumber> LINENUMBERS { get => _LINENUMBERS; set => _LINENUMBERS = value; } |
40 | 59 |
public List<Text> TEXTS { get => _TEXTS; set => _TEXTS = value; } |
60 |
public double WIDTH { get => _WIDTH; set => _WIDTH = value; } |
|
61 |
public double HEIGHT { get => _HEIGHT; set => _HEIGHT = value; } |
|
62 |
public List<Group> GROUP { get => _GROUP; set => _GROUP = value; } |
|
41 | 63 |
#endregion |
42 | 64 |
} |
43 | 65 |
public class PointdInfo |
44 | 66 |
{ |
45 | 67 |
public enum PointType |
46 | 68 |
{ |
47 | ||
69 |
None = 0, |
|
70 |
Run = 1, |
|
71 |
Branch = 2, |
|
48 | 72 |
} |
49 | 73 |
#region Property |
50 | 74 |
private Pointd _Pointd; |
... | ... | |
91 | 115 |
public SPPID_ITEM_TYPE SPPID_TYPE { get => _SPPID_TYPE; set => _SPPID_TYPE = value; } |
92 | 116 |
public List<Attribute> ATTRIBUTES { get => _ATTRIBUTES; set => _ATTRIBUTES = value; } |
93 | 117 |
#endregion |
94 |
public abstract void Modeling(Drawing drawing); |
|
118 | ||
119 |
public abstract void Modeling(); |
|
95 | 120 |
public abstract void AfterSetting(); |
96 | 121 |
public abstract void SetAttribute(); |
97 | 122 |
} |
... | ... | |
100 | 125 |
{ |
101 | 126 |
#region Property |
102 | 127 |
private string _ORIGINALPOINT; |
103 |
private List<Connector> _CONNECTORS; |
|
128 |
private List<Connector> _CONNECTORS = new List<Connector>();
|
|
104 | 129 |
private string _LOCATION; |
105 | 130 |
private string _SIZE; |
106 | 131 |
private double _ANGLE; |
... | ... | |
143 | 168 |
// End |
144 | 169 | |
145 | 170 |
// Location Setting |
171 |
SPPIDUtill.ConvertPointBystring(_ORIGINALPOINT, ref _LOCATION_X, ref _LOCATION_Y); |
|
172 |
SPPIDUtill.ConvertSPPIDPoint(ref _LOCATION_X, ref _LOCATION_Y, AutoModeling.DrawingItem.WIDTH, AutoModeling.DrawingItem.HEIGHT); |
|
173 |
// End |
|
146 | 174 | |
147 | ||
175 |
// SPPID Type Setting |
|
176 |
SPPID_TYPE = SPPID_ITEM_TYPE.SYMBOL; |
|
148 | 177 |
// End |
149 | 178 |
} |
150 | 179 | |
151 |
public override void Modeling(Drawing drawing)
|
|
180 |
public override void Modeling() |
|
152 | 181 |
{ |
153 |
throw new NotImplementedException(); |
|
182 |
try |
|
183 |
{ |
|
184 |
Placement _placement = new Placement(); |
|
185 |
LMSymbol lmSymbol = null; |
|
186 |
SPPID_ITEM_OBJECT = null; |
|
187 | ||
188 |
if (!string.IsNullOrEmpty(SPPIDMAPPINGNAME)) |
|
189 |
{ |
|
190 |
LMSymbol connectedSymbol = null; |
|
191 |
foreach (Connector connector in CONNECTORS) |
|
192 |
{ |
|
193 |
if (!string.IsNullOrEmpty(connector.CONNECTEDITEM) || connector.CONNECTEDITEM != "None") |
|
194 |
{ |
|
195 |
object _obj = SPPIDUtill.FindObjectByUID(connector.CONNECTEDITEM); |
|
196 |
if (_obj != null && typeof(Symbol) == _obj.GetType()) |
|
197 |
{ |
|
198 |
Symbol _symbol = _obj as Symbol; |
|
199 |
if (_symbol.SPPID_ITEM_OBJECT != null) |
|
200 |
connectedSymbol = _symbol.SPPID_ITEM_OBJECT as LMSymbol; |
|
201 |
} |
|
202 |
} |
|
203 |
} |
|
204 | ||
205 |
if (connectedSymbol != null) |
|
206 |
lmSymbol = _placement.PIDPlaceSymbol(SPPIDMAPPINGNAME, LOCATION_X, LOCATION_Y, Mirror: MIRROR, Rotation: ANGLE, TargetItem: connectedSymbol); |
|
207 |
else |
|
208 |
lmSymbol = _placement.PIDPlaceSymbol(SPPIDMAPPINGNAME, LOCATION_X, LOCATION_Y, Mirror: MIRROR, Rotation: ANGLE); |
|
209 | ||
210 |
// Commit and input sppid item object |
|
211 |
lmSymbol.Commit(); |
|
212 |
SPPID_ITEM_OBJECT = lmSymbol; |
|
213 |
// End |
|
214 | ||
215 |
// Check Child And Modeling |
|
216 |
foreach (string sChild in CHILD) |
|
217 |
{ |
|
218 |
try |
|
219 |
{ |
|
220 |
string[] arrChild = sChild.Split(new char[',']); |
|
221 |
string sArrow = arrChild[0]; |
|
222 |
string sMappingName = arrChild[1]; |
|
223 | ||
224 |
double dChildAngle = 0; |
|
225 |
if (sArrow == "UP") |
|
226 |
dChildAngle = 0; |
|
227 |
else if (sArrow == "RIGHT") |
|
228 |
dChildAngle = 90 * Math.PI / 180; |
|
229 |
else if (sArrow == "DOWN") |
|
230 |
dChildAngle = Math.PI; |
|
231 |
else |
|
232 |
dChildAngle = 270 * Math.PI / 180; |
|
233 | ||
234 |
LMSymbol _childLmSymbol = _placement.PIDPlaceSymbol(sMappingName, LOCATION_X, LOCATION_Y, Mirror: 0, Rotation: dChildAngle, TargetItem: SPPID_ITEM_OBJECT); |
|
235 |
_childLmSymbol.Commit(); |
|
236 |
CHILD_SPPID_ITEM_OBJECT.Add(_childLmSymbol); |
|
237 |
} |
|
238 |
catch (Exception) |
|
239 |
{ |
|
240 |
|
|
241 |
} |
|
242 |
} |
|
243 |
// End |
|
244 |
} |
|
245 |
} |
|
246 |
catch (Exception) |
|
247 |
{ |
|
248 | ||
249 |
} |
|
154 | 250 |
} |
155 | 251 | |
156 | 252 |
public override void SetAttribute() |
... | ... | |
171 | 267 |
#region Property |
172 | 268 |
private string _STARTPOINT; |
173 | 269 |
private string _ENDPOINT; |
174 |
private List<Connector> _CONNECTORS; |
|
270 |
private List<Connector> _CONNECTORS = new List<Connector>();
|
|
175 | 271 |
private string _LMCONNECTOR_MODELID; |
176 | 272 |
private SlopType _SLOPTYPE; |
177 | 273 |
private double _START_X; |
... | ... | |
191 | 287 |
#endregion |
192 | 288 |
public override void AfterSetting() |
193 | 289 |
{ |
194 |
throw new NotImplementedException(); |
|
290 |
// Point Setting |
|
291 |
SPPIDUtill.ConvertPointBystring(_STARTPOINT, ref _START_X, ref _START_Y); |
|
292 |
SPPIDUtill.ConvertSPPIDPoint(ref _START_X, ref _START_Y, AutoModeling.DrawingItem.WIDTH, AutoModeling.DrawingItem.HEIGHT); |
|
293 |
SPPIDUtill.ConvertPointBystring(_ENDPOINT, ref _END_X, ref _END_Y); |
|
294 |
SPPIDUtill.ConvertSPPIDPoint(ref _END_X,ref _END_Y, AutoModeling.DrawingItem.WIDTH, AutoModeling.DrawingItem.HEIGHT); |
|
295 |
// End |
|
296 | ||
297 |
// Slop Setting |
|
298 |
_SLOPTYPE = SPPIDUtill.CalcSlop(new Pointd(_START_X, _START_Y), new Pointd(_END_X, _END_Y)); |
|
299 |
// End |
|
300 | ||
301 |
// SPPID Type Setting |
|
302 |
SPPID_TYPE = SPPID_ITEM_TYPE.LINE; |
|
303 |
// End |
|
195 | 304 |
} |
196 | 305 | |
197 |
public override void Modeling(Drawing drawing)
|
|
306 |
public override void Modeling() |
|
198 | 307 |
{ |
199 |
throw new NotImplementedException();
|
|
308 |
throw new MissingMethodException();
|
|
200 | 309 |
} |
201 | 310 | |
202 | 311 |
public override void SetAttribute() |
... | ... | |
213 | 322 |
TrimLine = 2, |
214 | 323 |
} |
215 | 324 |
#region Property |
216 |
private string _ANGLE;
|
|
325 |
private double _ANGLE;
|
|
217 | 326 |
private string _LOCATION; |
218 | 327 |
private double _LOCATION_X; |
219 | 328 |
private double _LOCATION_Y; |
... | ... | |
222 | 331 |
private Line _TARGETLINE; |
223 | 332 |
private LineNumberType _LINENUMBERTYPE; |
224 | 333 | |
225 |
public string ANGLE { get => _ANGLE; set => _ANGLE = value; }
|
|
334 |
public double ANGLE { get => _ANGLE; set => _ANGLE = value; }
|
|
226 | 335 |
public string LOCATION { get => _LOCATION; set => _LOCATION = value; } |
227 | 336 |
public double LOCATION_X { get => _LOCATION_X; set => _LOCATION_X = value; } |
228 | 337 |
public double LOCATION_Y { get => _LOCATION_Y; set => _LOCATION_Y = value; } |
... | ... | |
234 | 343 | |
235 | 344 |
public override void AfterSetting() |
236 | 345 |
{ |
237 |
throw new NotImplementedException(); |
|
346 |
// Angle Setting |
|
347 |
if (ANGLE == 1.57) |
|
348 |
ANGLE = 90 * Math.PI / 180; |
|
349 |
else if (ANGLE == 3.14) |
|
350 |
ANGLE = Math.PI; |
|
351 |
else if (ANGLE == 4.71) |
|
352 |
ANGLE = 270 * Math.PI / 180; |
|
353 |
else |
|
354 |
ANGLE = 0; |
|
355 |
// End |
|
356 | ||
357 |
// Location Setting |
|
358 |
SPPIDUtill.ConvertPointBystring(_LOCATION, ref _LOCATION_X, ref _LOCATION_Y); |
|
359 |
SPPIDUtill.ConvertSPPIDPoint(ref _LOCATION_X, ref _LOCATION_Y, AutoModeling.DrawingItem.WIDTH, AutoModeling.DrawingItem.HEIGHT); |
|
360 |
// End |
|
361 | ||
362 |
// SPPID Type Setting |
|
363 |
SPPID_TYPE = SPPID_ITEM_TYPE.LABEL; |
|
364 |
// End |
|
238 | 365 |
} |
239 | 366 | |
240 |
public override void Modeling(Drawing drawing)
|
|
367 |
public override void Modeling() |
|
241 | 368 |
{ |
242 |
throw new NotImplementedException(); |
|
369 |
try |
|
370 |
{ |
|
371 |
if (TARGETLINE != null && !string.IsNullOrEmpty(TARGETLINE.LMCONNECTOR_MODELID)) |
|
372 |
{ |
|
373 |
Placement _placement = new Placement(); |
|
374 |
Array points = new double[] { LOCATION_X, LOCATION_Y }; |
|
375 |
LMPipeRun _pipeRun = _placement.PIDDataSource.GetPipeRun(TARGETLINE.LMCONNECTOR_MODELID); |
|
376 |
if (_pipeRun != null) |
|
377 |
{ |
|
378 |
foreach (LMRepresentation rep in _pipeRun.Representations) |
|
379 |
{ |
|
380 |
if (rep.get_RepresentationType() == "Connector" && rep.get_ItemStatus() == "Active") |
|
381 |
{ |
|
382 |
LMConnector _LmConnector = _placement.PIDDataSource.GetConnector(rep.Id); |
|
383 |
LMLabelPersist _LmLabelPresist = _placement.PIDPlaceLabel(SPPIDMAPPINGNAME, ref points, Rotation: ANGLE, LabeledItem: _LmConnector.AsLMRepresentation(), IsLeaderVisible: true); |
|
384 |
_LmLabelPresist.Commit(); |
|
385 |
SPPID_ITEM_OBJECT = _LmLabelPresist; |
|
386 |
} |
|
387 |
} |
|
388 |
} |
|
389 |
} |
|
390 |
} |
|
391 |
catch (Exception) |
|
392 |
{ |
|
393 | ||
394 |
} |
|
243 | 395 |
} |
244 | 396 | |
245 | 397 |
public override void SetAttribute() |
... | ... | |
251 | 403 |
public class Text : SPPID_ITEM |
252 | 404 |
{ |
253 | 405 |
#region Property |
254 |
private string _ANGLE;
|
|
406 |
private double _ANGLE;
|
|
255 | 407 |
private string _LOCATION; |
256 |
private string _LOCATION_X;
|
|
257 |
private string _LOCATION_Y;
|
|
408 |
private double _LOCATION_X;
|
|
409 |
private double _LOCATION_Y;
|
|
258 | 410 |
private string _TEXT; |
259 | 411 |
private string _OWNER; |
260 | 412 | |
261 |
public string ANGLE { get => _ANGLE; set => _ANGLE = value; }
|
|
413 |
public double ANGLE { get => _ANGLE; set => _ANGLE = value; }
|
|
262 | 414 |
public string LOCATION { get => _LOCATION; set => _LOCATION = value; } |
263 |
public string LOCATION_X { get => _LOCATION_X; set => _LOCATION_X = value; }
|
|
264 |
public string LOCATION_Y { get => _LOCATION_Y; set => _LOCATION_Y = value; }
|
|
415 |
public double LOCATION_X { get => _LOCATION_X; set => _LOCATION_X = value; }
|
|
416 |
public double LOCATION_Y { get => _LOCATION_Y; set => _LOCATION_Y = value; }
|
|
265 | 417 |
public string TEXT { get => _TEXT; set => _TEXT = value; } |
266 | 418 |
public string OWNER { get => _OWNER; set => _OWNER = value; } |
267 | 419 |
#endregion |
268 | 420 |
public override void AfterSetting() |
269 | 421 |
{ |
270 |
throw new NotImplementedException(); |
|
422 |
// Angle Setting |
|
423 |
if (ANGLE == 1.57) |
|
424 |
ANGLE = 90 * Math.PI / 180; |
|
425 |
else if (ANGLE == 3.14) |
|
426 |
ANGLE = Math.PI; |
|
427 |
else if (ANGLE == 4.71) |
|
428 |
ANGLE = 270 * Math.PI / 180; |
|
429 |
else |
|
430 |
ANGLE = 0; |
|
431 |
// End |
|
432 | ||
433 |
// Location Setting |
|
434 |
SPPIDUtill.ConvertPointBystring(_LOCATION, ref _LOCATION_X, ref _LOCATION_Y); |
|
435 |
SPPIDUtill.ConvertSPPIDPoint(ref _LOCATION_X, ref _LOCATION_Y, AutoModeling.DrawingItem.WIDTH, AutoModeling.DrawingItem.HEIGHT); |
|
436 |
// End |
|
437 | ||
438 |
// SPPID Type Setting |
|
439 |
SPPID_TYPE = SPPID_ITEM_TYPE.TEXT; |
|
440 |
// End |
|
271 | 441 |
} |
272 | 442 | |
273 |
public override void Modeling(Drawing drawing)
|
|
443 |
public override void Modeling() |
|
274 | 444 |
{ |
275 |
throw new NotImplementedException(); |
|
445 |
try |
|
446 |
{ |
|
447 |
Placement _placement = new Placement(); |
|
448 |
if (NAME == "TEXT") |
|
449 |
{ |
|
450 |
LMSymbol _LmSymbol = _placement.PIDPlaceSymbol(SPPIDMAPPINGNAME, LOCATION_X, LOCATION_Y, Rotation: ANGLE); |
|
451 |
LMItemNote _LmItemNote = _placement.PIDDataSource.GetItemNote(_LmSymbol.ModelItemID); |
|
452 |
_LmItemNote.Attributes["Note.Body"].set_Value(TEXT); |
|
453 |
_LmItemNote.Commit(); |
|
454 |
SPPID_ITEM_OBJECT = _LmItemNote; |
|
455 |
} |
|
456 |
else if (NAME == "SIZE" && !string.IsNullOrEmpty(OWNER)) |
|
457 |
{ |
|
458 |
object _obj = SPPIDUtill.FindObjectByUID(OWNER); |
|
459 | ||
460 |
Array array = new double[] { LOCATION_X, LOCATION_Y }; |
|
461 | ||
462 |
if (typeof(Symbol) == _obj.GetType()) |
|
463 |
{ |
|
464 |
Symbol _symbol = _obj as Symbol; |
|
465 |
LMSymbol _LmSymbol = _symbol.SPPID_ITEM_OBJECT as LMSymbol; |
|
466 | ||
467 |
string fileName = _LmSymbol.get_FileName(); |
|
468 |
if (fileName.Contains("Piping")) |
|
469 |
SPPIDMAPPINGNAME = @"\Piping\Labels - Piping Components\Nominal Diameter.sym"; |
|
470 |
else if (fileName.Contains("Instrumentation")) |
|
471 |
SPPIDMAPPINGNAME = @"\Instrumentation\Labels - General Instrument\Nominal Diameter.sym"; |
|
472 | ||
473 |
LMLabelPersist _LmLabelPersist = _placement.PIDPlaceLabel(SPPIDMAPPINGNAME, ref array, Rotation: ANGLE, LabeledItem: _LmSymbol.AsLMRepresentation(), IsLeaderVisible: true); |
|
474 |
_LmLabelPersist.Commit(); |
|
475 | ||
476 |
SPPID_ITEM_OBJECT = _LmLabelPersist; |
|
477 |
} |
|
478 |
} |
|
479 |
} |
|
480 |
catch (Exception) |
|
481 |
{ |
|
482 | ||
483 |
} |
|
276 | 484 |
} |
277 | 485 | |
278 | 486 |
public override void SetAttribute() |
내보내기 Unified diff