21 |
21 |
using AVEVA.PID.GUI;
|
22 |
22 |
using AVEVA.PID.Common;
|
23 |
23 |
using AVEVA.PID.DWGSelector;
|
|
24 |
using AVEVA.PID.Utilities;
|
24 |
25 |
|
25 |
26 |
using AVEVA.PID.CustomizationUtility.DB;
|
26 |
27 |
using AVEVA.PID.CustomizationUtility.Model;
|
... | ... | |
33 |
34 |
public static AutoModeling Running { get; set; }
|
34 |
35 |
Model.Document document;
|
35 |
36 |
|
36 |
|
public AutoModeling(Model.Document document)
|
|
37 |
System.Data.DataTable AvevaSymbolTable = null;
|
|
38 |
|
|
39 |
public AutoModeling(Model.Document document, System.Data.DataTable AvevaSymbolTable)
|
37 |
40 |
{
|
38 |
41 |
this.document = document;
|
|
42 |
this.AvevaSymbolTable = AvevaSymbolTable;
|
39 |
43 |
}
|
40 |
44 |
|
41 |
45 |
public void CreateDrawing()
|
... | ... | |
126 |
130 |
}
|
127 |
131 |
private void SymbolModeling(Symbol symbol)
|
128 |
132 |
{
|
129 |
|
long handle = InsertSymbol(symbol.Aveva.Name, symbol.Aveva.X, symbol.Aveva.Y);
|
130 |
|
if (handle != 0)
|
|
133 |
DataRow[] allRows = AvevaSymbolTable.Select(string.Format("Symbol_Name = '{0}'", symbol.Aveva.Name));
|
|
134 |
if (allRows.Length == 1)
|
131 |
135 |
{
|
132 |
|
symbol.Aveva.Handle = handle;
|
133 |
|
ObjectId objectId = GetObjectIdByHandle(handle);
|
134 |
|
if (objectId != ObjectId.Null)
|
|
136 |
DataRow symbolRow = allRows[0];
|
|
137 |
bool bAngle = CheckAngle(symbolRow);
|
|
138 |
bool bBalloon = CheckBalloon(symbol);
|
|
139 |
|
|
140 |
long handle = InsertSymbol(symbol, symbolRow, bAngle, bBalloon);
|
|
141 |
if (handle != 0)
|
135 |
142 |
{
|
136 |
|
SetBlockReferenceRotation(objectId, symbol.ANGLE);
|
|
143 |
symbol.Aveva.Handle = handle;
|
|
144 |
|
|
145 |
if (!bAngle)
|
|
146 |
{
|
|
147 |
ObjectId objectId = GetObjectIdByHandle(handle);
|
|
148 |
if (objectId != ObjectId.Null)
|
|
149 |
{
|
|
150 |
SetBlockReferenceRotation(objectId, symbol.ANGLE);
|
|
151 |
}
|
|
152 |
}
|
137 |
153 |
}
|
138 |
154 |
}
|
139 |
|
|
140 |
155 |
}
|
141 |
156 |
#endregion
|
142 |
157 |
|
... | ... | |
236 |
251 |
else
|
237 |
252 |
return 0;
|
238 |
253 |
}
|
239 |
|
private long InsertSymbol(string insertSymbolName, double x, double y)
|
|
254 |
private long InsertSymbol(Symbol symbol, DataRow symbolRow, bool needAngle, bool needBalloon)
|
240 |
255 |
{
|
241 |
256 |
long handle = 0;
|
242 |
257 |
try
|
243 |
258 |
{
|
|
259 |
string insertSymbolName = symbol.Aveva.Name;
|
|
260 |
double x = symbol.Aveva.X;
|
|
261 |
double y = symbol.Aveva.Y;
|
|
262 |
|
244 |
263 |
List<long> prevHandles = GetAllBlockHandlesByName(insertSymbolName);
|
245 |
264 |
|
246 |
265 |
AVEVA.PID.Utilities.DrawingData drawingData = new AVEVA.PID.Utilities.DrawingData();
|
... | ... | |
249 |
268 |
Editor editor = acDoc.Editor;
|
250 |
269 |
List<object> commandParam = new List<object>();
|
251 |
270 |
commandParam.Add("INSSYM");
|
|
271 |
|
|
272 |
// Insert Point
|
252 |
273 |
Point3d point = new Point3d(x, y, 0);
|
253 |
274 |
commandParam.Add(point);
|
254 |
|
commandParam.Add(null);
|
|
275 |
|
|
276 |
// Check Insert Point
|
|
277 |
if (needAngle)
|
|
278 |
commandParam.Add(symbol.ANGLE);
|
|
279 |
|
|
280 |
// Check Balloon
|
|
281 |
if (needBalloon)
|
|
282 |
{
|
|
283 |
point = new Point3d(x + 20, y + 20, 0);
|
|
284 |
commandParam.Add(point);
|
|
285 |
|
|
286 |
// Check LeaderLine
|
|
287 |
if (GraphicalUtility.IsLeaderReqOnSymbolBalloons())
|
|
288 |
commandParam.Add(x + "," + y);
|
|
289 |
}
|
|
290 |
|
|
291 |
for (int i = 0; i < 8; i++)
|
|
292 |
commandParam.Add(null);
|
255 |
293 |
|
256 |
294 |
editor.Command(commandParam.ToArray());
|
257 |
295 |
|
... | ... | |
482 |
520 |
|
483 |
521 |
return result;
|
484 |
522 |
}
|
|
523 |
private bool CheckAngle(DataRow symbolRow)
|
|
524 |
{
|
|
525 |
return int.Parse(symbolRow["Insert_Points"].ToString()).Equals(2);
|
|
526 |
}
|
|
527 |
private bool CheckBalloon(Symbol symbol)
|
|
528 |
{
|
|
529 |
bool result = false;
|
|
530 |
|
|
531 |
string text = string.Empty;
|
|
532 |
Hashtable symbolDefinitions = GraphicsUtility.GetSymbolDefinitions(symbol.Aveva.Name);
|
|
533 |
if (symbolDefinitions.Count != 0)
|
|
534 |
{
|
|
535 |
text = symbolDefinitions[SymbolDefinition.symAflowType].ToString().ToUpper();
|
|
536 |
|
|
537 |
if (text.Equals("VLP"))
|
|
538 |
text = "VPO";
|
|
539 |
else if (text.Equals("IVP"))
|
|
540 |
text = "IPO";
|
|
541 |
|
|
542 |
if (SymbolCategory.astrLabelBalloonBlockNames.Contains(text))
|
|
543 |
result = true;//dumbDwgUpgrade.addLabelBalloon(symbolForInsertion, objectId);
|
|
544 |
}
|
|
545 |
|
|
546 |
return result;
|
|
547 |
}
|
485 |
548 |
#endregion
|
486 |
549 |
|
487 |
550 |
#region Test Source
|
... | ... | |
491 |
554 |
//DrawSignal("SONIC", new List<string>() { "2,100", "100,100" });
|
492 |
555 |
|
493 |
556 |
DrawPipe("Main Pipe", new List<string>() { "2,100", "100,100" });
|
494 |
|
InsertSymbol("BAVA", 50, 100);
|
|
557 |
Symbol symbol = new Symbol();
|
|
558 |
symbol.Aveva = new AvevaSymbolInfo();
|
|
559 |
symbol.Aveva.Name = "INVB";
|
|
560 |
symbol.Aveva.X = 50;
|
|
561 |
symbol.Aveva.Y = 100;
|
|
562 |
|
|
563 |
DataRow[] allRows = AvevaSymbolTable.Select(string.Format("Symbol_Name = '{0}'", symbol.Aveva.Name));
|
|
564 |
if (allRows.Length == 1)
|
|
565 |
{
|
|
566 |
DataRow symbolRow = allRows[0];
|
|
567 |
bool bAngle = CheckAngle(symbolRow);
|
|
568 |
bool bBalloon = CheckBalloon(symbol);
|
|
569 |
bBalloon = false;
|
|
570 |
long handle = InsertSymbol(symbol, symbolRow, bAngle, bBalloon);
|
|
571 |
}
|
|
572 |
|
|
573 |
Hashtable symbolDefinitions = GraphicsUtility.GetSymbolDefinitions(symbol.Aveva.Name);
|
|
574 |
string text = symbolDefinitions[SymbolDefinition.symAflowType].ToString().ToUpper();
|
|
575 |
if (int.Parse(symbolDefinitions[SymbolDefinition.symNoOfInsertPoints].ToString()).Equals(2))
|
|
576 |
{
|
|
577 |
bool bIsPromptRotate = true;
|
|
578 |
}
|
|
579 |
int num = int.Parse(symbolDefinitions[SymbolDefinition.symFixedOrUserDefined].ToString());
|
|
580 |
|
|
581 |
AssociateSymbolType eAssosiateSym = AssociateSymbolType.None;
|
|
582 |
bool bIsSymbolHasAssociation = GraphicalUtility.FindSymbolHasAssociation(text, ref eAssosiateSym);
|
|
583 |
bool bPlaceSimpleBlocks = SymbolCategory.astrSimplePlacedBlocks.Contains(text);
|
|
584 |
|
495 |
585 |
//DrawPipe("Main Pipe", new List<string>() { "2,200", "100,200" });
|
496 |
586 |
|
497 |
587 |
//DrawPipe("Sub Pipe", new List<string>() { "50,100", "50,200" });
|
498 |
588 |
}
|
499 |
589 |
public static void TESTStatic()
|
500 |
590 |
{
|
501 |
|
AutoModeling auto = new AutoModeling(null);
|
|
591 |
System.Data.DataTable avevaSymbolTable = Project_DB.SelectSymbolTable();
|
|
592 |
AutoModeling auto = new AutoModeling(null, avevaSymbolTable);
|
502 |
593 |
auto.test();
|
503 |
594 |
}
|
504 |
595 |
#endregion
|