private void BtnTX_Click(object sender, EventArgs e) { AcadDocument AcadDoc = AcadApp.ActiveDocument; AcadObject pSelectLineobj = pSelectLineobj = GetHX(); if (pSelectLineobj == null) { return; } try { AcadLWPolyline Adlwp = (AcadLWPolyline)pSelectLineobj; double[] AdlwpPoint = (double[])Adlwp.Coordinates; int PointCount = AdlwpPoint.Length / 2; superGridControlCoords.PrimaryGrid.Rows.Clear(); // ISTPoint[] pSTPoints = new ISTPoint[PointCount]; for (int j = 0; j < PointCount; j++) { ISTPoint pSTPoint = new STPointClass() { X = AdlwpPoint[j * 2], Y = AdlwpPoint[j * 2 + 1] }; superGridControlCoords.PrimaryGrid.Rows.Add(new DevComponents.DotNetBar.SuperGrid.GridRow( new object[] { j + 1, Math.Round(AdlwpPoint[j * 2 + 1], 3).ToString("0.000"), Math.Round(AdlwpPoint[j * 2], 3).ToString("0.000") }) { Tag = pSTPoint }); } superGridControlCoords.Tag = Adlwp; TxbTXMJ.Text = Adlwp.Area.ToString("0.00"); } finally { } }
private string GetPointID() { //IPipePoint pPipePoint = null; AcadObject pAcadObject = PickObject(); if (pAcadObject == null) { return(null); } if (pAcadObject.ObjectName.Equals("AcDbText") || pAcadObject.ObjectName.Equals("AcDbMInsertBlock")) { AcadDictionary pAcadDictionary = pAcadObject.GetExtensionDictionary(); if (pAcadDictionary.Count == 1) { string ID = (pAcadDictionary.Item(0) as AcadXRecord).Name; return(ID); /* string SURVEYID = GetPointSURVEYID(ID); * if (SURVEYID != string.Empty) * { * * return SURVEYID; * } * else return string.Empty;*/ } } return(string.Empty); }
private ISTGeometry ConvertDBObject(AcadObject pAcadObject) { ISTPointCollection pSTPointCollection = new STPolygonClass(); AcadLWPolyline Adlwp = (AcadLWPolyline)pAcadObject; double[] AdlwpPoint = (double[])Adlwp.Coordinates; int PointCount = AdlwpPoint.Length / 2; for (int j = 0; j < PointCount - 1; j++) { ISTPoint fromPoint = new STPointClass(); fromPoint.X = AdlwpPoint[j * 2]; fromPoint.Y = AdlwpPoint[j * 2 + 1]; ISTPoint toPoint = new STPointClass(); toPoint.X = AdlwpPoint[j * 2 + 2]; toPoint.Y = AdlwpPoint[j * 2 + 3]; if (Adlwp.GetBulge(j) != 0) //添加弧线转折现处理代码 { double Angle = Math.Atan(Adlwp.GetBulge(j)) * 4; string url = HR.Utility.CommonVariables.GetAppSetString("ConvertArcToPolyline"); string data = string.Format("Angle={0}&FromPointX={1}&FromPointY={2}&ToPointX={3}&ToPointY={4}&f=json" , Angle, fromPoint.X, fromPoint.Y, toPoint.X, toPoint.Y); string Request = PostData(url, data); if (Request.Contains("error")) { throw new Exception("调用曲线转折线服务异常"); } XmlNode pPointNode = Newtonsoft.Json.JsonConvert.DeserializeXmlNode(Request); string[] XYs = pPointNode.FirstChild.InnerText.TrimEnd().Split(';'); foreach (string XY in XYs) { string[] pXY = XY.Split(','); ISTPoint pPoint = new STPointClass(); try { pPoint.X = double.Parse(pXY[0]); pPoint.Y = double.Parse(pXY[1]); pSTPointCollection.AddPoint(pPoint); } catch { continue; } } } else { pSTPointCollection.AddPoint(fromPoint); } if (j == PointCount - 2) { pSTPointCollection.AddPoint(toPoint); } } ISTPoint FPoint = new STPointClass(); FPoint.X = AdlwpPoint[0]; FPoint.Y = AdlwpPoint[1]; pSTPointCollection.AddPoint(FPoint); return(pSTPointCollection); }
private string GetTextString(string title) { string str = string.Empty; AcadDocument AcadDoc = AcadApp.ActiveDocument; Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint; string pickPrompt = title; try { AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); } catch (Exception) { return(""); } AcadObject returnCADObj = (AcadObject)returnObj; if (returnCADObj.ObjectName == "AcDbText") { str = ((AcadText)returnCADObj).TextString; } else if (returnCADObj.ObjectName == "AcDbMText") { string Text = ((AcadMText)returnCADObj).TextString; if (Text.Contains('*')) { int FirstIndex = Text.IndexOf('*'); str = Text.Substring(FirstIndex, Text.IndexOf('*', FirstIndex + 1) - FirstIndex + 1); } else { str = Text; } } return(str); }
private AcadObject GetHX() { // tableLayoutPanel2.Enabled = false; AcadDocument AcadDoc = AcadApp.ActiveDocument; Microsoft.VisualBasic.Interaction.AppActivate(AcadApp.Caption); object returnObj, pickPoint; string pickPrompt = "获取入库红线"; try { AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); } catch { return(null); } AcadObject returnCADObj = (AcadObject)returnObj; if (returnCADObj.ObjectName == "AcDbPolyline") { AcadLWPolyline Adlwp = (AcadLWPolyline)returnCADObj; if (!Adlwp.Closed) { return(null); } GeoChange = true; return(returnCADObj); } //Microsoft.VisualBasic.Interaction.AppActivate(this.Text); return(null); }
private bool InternFindTextStyleNameByObjectID(double vdblObjectID, ref string rstrName, ref string nrstrErrMsg) { nrstrErrMsg = null; rstrName = null; AcadDatabase acadDatabase = mobjAcadDatabase; string nrstrErrMsg2 = ""; bool InternFindTextStyleNameByObjectID = default(bool); AcadTextStyle dobjAcadTextStyle2; AcadObject dobjAcadObject2 = default(AcadObject); if (!acadDatabase.FriendObjectIdToObject(vdblObjectID, ref dobjAcadObject2, ref nrstrErrMsg2)) { nrstrErrMsg = "Objekt kann über die Objekt-ID nicht gefunden werden."; } else if (Operators.CompareString(dobjAcadObject2.ObjectName, "AcDbTextStyleTableRecord", TextCompare: false) != 0) { nrstrErrMsg = "Das über die Objekt-ID gefundene Objekt ist ungültig."; } else { dobjAcadTextStyle2 = (AcadTextStyle)dobjAcadObject2; rstrName = dobjAcadTextStyle2.Name; InternFindTextStyleNameByObjectID = true; } dobjAcadTextStyle2 = null; dobjAcadObject2 = null; return(InternFindTextStyleNameByObjectID); }
private IPipePoint GetPointObject() { IPipePoint pPipePoint = null; AcadObject pAcadObject = PickObject(); if (pAcadObject == null) { return(null); } if (pAcadObject.ObjectName.Equals("AcDbText") || pAcadObject.ObjectName.Equals("AcDbMInsertBlock")) { AcadDictionary pAcadDictionary = pAcadObject.GetExtensionDictionary(); if (pAcadDictionary.Count > 1) { AcadXRecord pAcadXRecord1 = pAcadDictionary.Item(1) as AcadXRecord; AcadXRecord pAcadXRecord2 = pAcadDictionary.Item(0) as AcadXRecord; string TableName, ID; if (pAcadXRecord1.Name.StartsWith("PS_")) { TableName = pAcadXRecord1.Name; ID = pAcadXRecord2.Name; } else { TableName = pAcadXRecord2.Name; ID = pAcadXRecord1.Name; } //if( ) pPipePoint = Pipeobject.GetDataByID(ID, TableName) as IPipePoint; return(pPipePoint); } } return(null); }
public AcSmSheet GetSheetFromLayout(AcadObject pAcDbLayout) { IAcSmSheetSetMgr ssMgr = new AcSmSheetSetMgr(); AcSmSheet sheet; ssMgr.GetSheetFromLayout(pAcDbLayout, out sheet); return(sheet); }
private static void BackHatch(AcadObject AcadObject) { AcadDictionary dictionary = AcadDoc.ModelSpace.GetExtensionDictionary(); AcadSortentsTable sentityObj = (AcadSortentsTable)dictionary.GetObject("ACAD_SORTENTS"); AcadObject[] entities = new AcadObject[] { AcadObject }; sentityObj.MoveToBottom(entities); }
public void SetFromBorder(Border border) { ProcessingArea = AcadObject.Create(border.ObjectId); var par = ((SawingTechProcess)TechProcess).SawingTechProcessParams; if (SawingModes == null) { SawingModes = (border.ObjectId.IsLine() ? par.SawingLineModes : par.SawingCurveModes).ConvertAll(x => x.Clone()); } OuterSide = border.OuterSide; IsExactlyBegin = border.IsExactlyBegin; IsExactlyEnd = border.IsExactlyEnd; }
private void bObjects_Click(object sender, EventArgs e) { Acad.SelectObjectIds(); Interaction.SetActiveDocFocus(); var ids = Interaction.GetSelection("\nВыберите объекты", $"{AcadObjectNames.Surface},{AcadObjectNames.Region}"); if (ids.Length == 0) { return; } _techProcess.ProcessingArea = AcadObject.CreateList(ids); tbObjects.Text = _techProcess.ProcessingArea.GetDesc(); lbSize.Text = Acad.GetSize(_techProcess.ProcessingArea); }
private void bObjects_Click(object sender, EventArgs e) { Interaction.SetActiveDocFocus(); Acad.SelectObjectIds(); var ids = Interaction.GetSelection("\nВыберите окружности", AcadObjectNames.Circle); if (ids.Length == 0) { return; } _techProcess.ProcessingArea = AcadObject.CreateList(ids); tbObjects.Text = _techProcess.ProcessingArea.GetDesc(); Acad.SelectObjectIds(ids); }
private void bObjects_Click(object sender, System.EventArgs e) { Interaction.SetActiveDocFocus(); Acad.SelectObjectIds(); var ids = Interaction.GetSelection("\nВыберите объекты контура"); if (ids.Length == 0) { return; } _techProcess.ProcessingArea = AcadObject.CreateList(ids); tbObjects.Text = _techProcess.ProcessingArea.GetDesc(); Acad.SelectObjectIds(ids); }
private void bProcessingArea_Click(object sender, EventArgs e) { Interaction.SetActiveDocFocus(); Acad.SelectObjectIds(); var ids = Interaction.GetSelection("\nВыберите объекты контура плитки", "LINE"); if (ids.Length == 0) { return; } _techProcess.ProcessingArea = AcadObject.CreateList(ids); tbContour.Text = _techProcess.ProcessingArea.GetDesc(); Acad.SelectObjectIds(ids); SetParamsEnabled(); }
private void bObjects_Click(object sender, EventArgs e) { Interaction.SetActiveDocFocus(); Acad.SelectObjectIds(); var ids = Interaction.GetSelection("\nВыберите профиль [Отрезок], [Дуга], [Полилиния]", $"{AcadObjectNames.Line},{AcadObjectNames.Arc},{AcadObjectNames.Lwpolyline}"); if (ids.Length == 0) { return; } ids = new ObjectId[] { ids[0] }; _techProcess.ProcessingArea = AcadObject.CreateList(ids); tbObjects.Text = _techProcess.ProcessingArea.GetDesc(); Acad.SelectObjectIds(ids); }
public virtual void SerializeInit() { if (OriginX != 0 || OriginY != 0) { OriginObject = Acad.CreateOriginObject(new Point3d(OriginX, OriginY, 0)); } AcadObject.LoadAcadProps(this); TechOperations.ForEach(p => { AcadObject.LoadAcadProps(p); p.TechProcessBase = this; p.SerializeInit(); }); }
private void bRail_Click(object sender, EventArgs e) { Interaction.SetActiveDocFocus(); Acad.SelectObjectIds(); var ids = Interaction.GetSelection("\nВыберите направляющую [Отрезок]", AcadObjectNames.Line); if (ids.Length == 1) { _techProcess.Rail = AcadObject.Create(ids[0]); tbRail.Text = _techProcess.Rail.GetDesc(); Acad.SelectObjectIds(ids); } else { _techProcess.Rail = null; tbRail.Text = ""; } }
public static void ShowFields() { var Selection = Input.Objects("Выделите объекты для просмотра полей"); if (Input.StatusBad) { return; } using (var th = new TransactionHelper()) { var AcadObjects = th.ReadObjects(Selection); foreach (var AcadObject in AcadObjects) { var AcadObjectType = AcadObject.GetType(); Messaging.Tweet("Объект типа " + AcadObjectType.Name); BaseTypeInfo(AcadObjectType, AcadObject); } } }
private void bObjects_Click(object sender, EventArgs e) { if (_techProcess.ProcessingArea == null) { Acad.Alert("Укажите контур плитки"); return; } Interaction.SetActiveDocFocus(); Acad.SelectObjectIds(); var ids = Interaction.GetSelection("\nВыберите 2 элемента плитки"); if (ids.Length > 0) { _techProcess.CalcType(ids); _techProcess.Objects = AcadObject.CreateList(ids); tbObjects.Text = _techProcess.Objects.GetDesc(); tactileTechProcessBindingSource.ResetBindings(false); SetParamsEnabled(); } }
private AcadObject PickObject() { try { Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; AcadDocument AcadDoc = acDoc.AcadDocument as AcadDocument; Microsoft.VisualBasic.Interaction.AppActivate(AcadDoc.Application.Caption); keybd_event(Keys.Escape, 0, 0, 0); SendKeys.SendWait("{ESC}"); System.Windows.Forms.Application.DoEvents(); object returnObj, pickPoint; string pickPrompt = "选择对象"; AcadDoc.Utility.GetEntity(out returnObj, out pickPoint, pickPrompt); AcadObject returnCADObj = (AcadObject)returnObj; return(returnCADObj); } catch { return(null); } }
public IXMRK GetXMRK() { if (m_XMRK == null) { m_XMRK = new XMRKClass(); } //添加获取属性信息代码 if (GeoChange)//如果重新设置了图形 { AcadObject pAcadObject = superGridControlCoords.Tag as AcadObject; if (m_XMRK.ID == -1 && pAcadObject == null) { throw new Exception("未获取入库图形"); } m_XMRK.STGeometry = ConvertDBObject(pAcadObject); //m_XMRK.STGeometry.SRID = 300000; //if (!m_XMRK.STGeometry.IsSimplify()) //{ m_XMRK.STGeometry = m_XMRK.STGeometry.Simplify(); // m_XMRK.CADPath= //} ISTPointCollection pSTPointCollection = new STPointCollectionClass(); double[] AdlwpPoint = (double[])(pAcadObject as AcadLWPolyline).Coordinates; int PointCount = AdlwpPoint.Length / 2; for (int j = 0; j < PointCount; j++) { ISTPoint pSTPoint = new STPointClass() { X = AdlwpPoint[j * 2], Y = AdlwpPoint[j * 2 + 1] }; pSTPointCollection.AddPoint(pSTPoint); } m_XMRK.SoucePoints = pSTPointCollection; } return(m_XMRK); }
public List <Border> CreateExtraObjects(params ObjectId[] ids) { ExtraObjectsGroup?.DeleteGroup(); ExtraObjectsGroup = null; var techOperations = TechOperations.FindAll(p => p.ProcessingArea != null); techOperations.FindAll(p => ids.Contains(p.ProcessingArea.ObjectId)).ForEach(p => ((SawingTechOperation)p).OuterSide = Side.None); _borders = ids.Except(techOperations.Select(p => p.ProcessingArea.ObjectId)).Select(p => new Border(p)).ToList(); var borders = _borders.Concat(techOperations.Select(p => new Border((SawingTechOperation)p))).ToList(); borders.ForEach(p => p.Curve = Acad.OpenForRead(p.ObjectId)); ProcessingArea = AcadObject.CreateList(borders.Select(p => p.ObjectId)); while ((borders.Find(p => p.OuterSide != Side.None) ?? borders.FirstOrDefault()) is Border startBorder) { if (startBorder.OuterSide == Side.None) { startBorder.OuterSide = GetOuterSide(startBorder.Curve); } var contour = CalcBordersChain(startBorder, Corner.End); if (borders.Contains(startBorder)) { var contourBack = CalcBordersChain(startBorder, Corner.Start); contourBack.Reverse(); contourBack.Add(startBorder.Curve); contourBack.AddRange(contour); contour = contourBack; borders.Remove(startBorder); } var sign = startBorder.OuterSide == Side.Left ? 1 : -1; var hatchId = Graph.CreateHatch(contour, sign); if (hatchId.HasValue) { ExtraObjectsGroup = ExtraObjectsGroup.AppendToGroup(hatchId.Value); } } return(_borders); List <Curve> CalcBordersChain(Border border, Corner corner) { var point = border.Curve.GetPoint(corner); var contour = new List <Curve>(); while (borders.SingleOrDefault(p => p != border && p.Curve.HasPoint(point)) is Border nextBorder) { contour.Add(nextBorder.Curve); borders.Remove(nextBorder); var nextCorner = nextBorder.Curve.GetCorner(point); nextBorder.OuterSide = nextCorner != corner ? border.OuterSide : border.OuterSide.Opposite(); if (border.MustCalc || nextBorder.MustCalc) { var isExactly = CalcIsExactly(border, corner, nextBorder, nextCorner, point); border.SetIsExactly(corner, isExactly); nextBorder.SetIsExactly(nextCorner, isExactly); } border = nextBorder; corner = nextCorner.Swap(); point = border.Curve.GetPoint(corner); } return(contour); } bool CalcIsExactly(Border border, Corner corner, Border nextBorder, Corner nextCorner, Point3d point) { var v1 = border.Curve.GetTangent(corner); var v2 = nextBorder.Curve.GetTangent(nextCorner); var isLeftTurn = v1.MinusPiToPiAngleTo(v2) > Consts.Epsilon; var isLeftOuterSide = border.OuterSide == Side.Left; var isNextStartPoint = nextCorner == Corner.Start; return(isLeftTurn ^ isLeftOuterSide ^ isNextStartPoint); } Side GetOuterSide(Curve curve) { var startPoint = curve.GetPointAtParameter((curve.EndParam + curve.StartParam) / 2); var point = Interaction.GetLineEndPoint("Выберите направление внешней нормали к объекту", startPoint); var vector = curve.GetTangent(startPoint); return(vector.IsTurnRight((point - startPoint).ToVector2d()) ? Side.Right : Side.Left); } }
private void DrawCircle(Point3d ZoomPoint) { DocumentLock docLock = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.LockDocument(); Document acDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; Entity entity = null; using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { LayerTable acLyrTbl = acTrans.GetObject(acCurDb.LayerTableId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead) as LayerTable; string strLayerName = "Zoom"; LayerTableRecord acLyrTblRec = new LayerTableRecord(); if (acLyrTbl.Has(strLayerName) == false) { acLyrTblRec.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(255, 255, 255); acLyrTblRec.Name = strLayerName; acLyrTbl.UpgradeOpen(); acLyrTbl.Add(acLyrTblRec); acTrans.AddNewlyCreatedDBObject(acLyrTblRec, true); } else { TypedValue[] glq = new TypedValue[] { new TypedValue((int)DxfCode.LayerName, strLayerName) }; SelectionFilter sf = new SelectionFilter(glq); PromptSelectionResult SS = acDoc.Editor.SelectAll(sf); Autodesk.AutoCAD.EditorInput.SelectionSet SSet = SS.Value; if (SSet != null) { foreach (ObjectId id in SSet.GetObjectIds()) { AcadObject Adobj = null; entity = (Entity)acTrans.GetObject(id, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, true); DBObject obj = (DBObject)entity; Adobj = (AcadObject)obj.AcadObject; Adobj.Delete(); } } } BlockTable acBlkTbl; BlockTableRecord acBlkTblRec; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead) as BlockTable; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) as BlockTableRecord; Circle acCirc = new Circle(); acCirc.SetDatabaseDefaults(); acCirc.Center = ZoomPoint; acCirc.Radius = 0.05; acCirc.Layer = strLayerName; acBlkTblRec.AppendEntity(acCirc); acTrans.AddNewlyCreatedDBObject(acCirc, true); ObjectIdCollection collection = new ObjectIdCollection(); collection.Add(acCirc.ObjectId); Hatch hatch = new Hatch(); hatch.HatchStyle = HatchStyle.Normal; hatch.Layer = strLayerName; hatch.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(0, 0, 255); hatch.SetHatchPattern(HatchPatternType.PreDefined, "SOLID"); hatch.AppendLoop(HatchLoopTypes.Default, collection); hatch.EvaluateHatch(true); acBlkTblRec.AppendEntity(hatch); acTrans.AddNewlyCreatedDBObject(hatch, true); docLock.Dispose(); acTrans.Commit(); } }