AutoCADã®ãã©ã°ã€ã³ã®éçºã«ç¹åãã
ã·ãªãŒãºã®ç¬¬4éšãžããããã 以åã®èšäºã§ã¯ããã©ã°ã€ã³äœæã®äžè¬çãªåé¡ã«ã€ããŠè§ŠããŸãããããã®ç¥èã身ã«ä»ããŠãæçµçã«AutoCADãŠãŒã¶ãŒãçŽé¢ããŠããã¡ã€ã³ã¿ã¹ã¯ã§ããå³é¢ã®ç·šéã«é²ãããšãã§ããŸãã
ãã®èšäºã§ã¯ãéçºè
ãå¿
èŠãšããå¯èœæ§ã®ããæãåçŽãªæäœãåæããŸããã°ã©ãã£ãã¯ããªããã£ããå³é¢ã«äœæããŠé
眮ããïŒç·ãããªã©ã€ã³ãåãæ¥åãåïŒã
public static string disclaimer = " AutoCAD. â .";
ä»äºã®åã«
å°æ¬ãããŠããèªè
ãèªåã®ã³ã³ãã¥ãŒã¿ãŒã§äžèšã®äŸãç¹°ãè¿ãããå Žåã¯ã人çãç°¡çŽ åããããã«ããã©ã°ã€ã³ã®èªåããŒããæ€èšããå¿
èŠããããŸãã ããšãã°ã
ãã¢ã¬ã ã®
æçš¿ãèªãããšãã§ããŸã-ããã«ã€ããŠã®èšåããããŸãã
åé¡ã®æ¬è³ªãç°¡åã«èª¬æããŸãããã©ã°ã€ã³ãèªã¿èŸŒãã åŸã«ãã¢ã³ããŒããããããšã¯äžå¯èœã§ãããããã³ãŒãã倿Žããããã©ã°ã€ã³ãèµ·åããå¯äžã®æ¹æ³ã¯ãAutoCADãéããŠåèµ·åãããã©ã°ã€ã³ãåèªã¿èŸŒã¿ããããšã§ãã ãã®äºçްãªäœæ¥ã«ã¯æ°åããããŸããã50ã100åç¹°ãè¿ããåŸãéåžžã«ã€ã©ã€ã©ãå§ããŸãã
ãã©ã°ã€ã³ã®èµ·åã«ããããã®æé ã®ããããã®æ®µéãé€å€ã§ããŸããããã«ããã
æ°åã®ç¥çµçްèãç¯çŽã§ããŸãã
è¡
å³é¢ã«ç·ã远å ããã®ã¯é£ãããããŸããã
ããã¥ã¡ã³ã ïŒ
translation ïŒã«
èšèŒãããŠããäŸãåºç€ãšããŠäœ¿çšããŠããããå®è¡ããŸãããã
ãã©ã°ã€ã³ã³ãŒãïŒ using System; using System.IO; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.ApplicationServices; using acad = Autodesk.AutoCAD.ApplicationServices.Application; namespace HabrPlug_Primitives { public class ClassMyAutoCADDLL { public class Commands : IExtensionApplication { // AutoCAD "HabrCommand" [CommandMethod("HabrCommand")] public void HabrCommand() { // Document acDoc = acad.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // (Model Space) - BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Line acLine = new Line(new Point3d(25, 25, 0), new Point3d(33, 33, 0)); // acLine.SetDatabaseDefaults(); // acBlkTblRec.AppendEntity(acLine); // acTrans.AddNewlyCreatedDBObject(acLine, true); // acTrans.Commit(); } } // Initialize() Terminate() , IExtensionApplication public void Initialize() { } public void Terminate() { } } } }
ãããžã§ã¯ããäœæãããšãããã¡ãããããããçš®é¡ã®ããããªããšãå¿ããªãã§ãã ãã...ïŒæåã«ãå¿
èŠãª.NET Frameworkã®ããŒãžã§ã³ãæå®ããå¿
èŠããããŸãïŒç§ã®å Žåã.NET Framework 3.5ã§ãïŒã
次ã«ã AcDbMgd.dllããã³AcMgd.dllã©ã€ãã©ãªã«ãªã³ã¯ã远å ãããããã®ãªã³ã¯ã®ããããã£ã§ã¿ãŒã²ãããããžã§ã¯ããã©ã«ããŒã«ã©ã€ãã©ãªãã³ããŒããããšãçŠæ¢ããå¿
èŠããããŸãïŒ CopyLocal
ãã©ã¡ãŒã¿ãŒãFalse
èšå®ããŸãïŒã
ã³ãŒãèªäœã¯éåžžã«ã·ã³ãã«ã§ãããã§ã¯è©³çްã«ç¹å¥ãªããšã¯ãããŸããã
æåã« ããã©ã³ã¶ã¯ã·ã§ã³ãéå§ããŸãïŒãããäœã§ããããªãå¿
èŠãªã®ãã«ã€ããŠã¯ãåã®èšäºã§èª¬æããŸããïŒã
第äºã« ã
Model Space
ãéããŸã-ããã¯å®éãå³é¢ã§ãã ã¢ãã«ã¹ããŒã¹ã®ããæç¢ºãªå®çŸ©ã¯
ãã¡ãã¡ã§èŠã€ããããšãã§ããŸãã å³é¢ã«æ°ãããªããžã§ã¯ãã远å ããããããèªã¿åãããã³æžã蟌ã¿ãã¢ã¯ã»ã¹ïŒ
OpenMode.ForWrite
ïŒãèŠæ±ããå¿
èŠããããŸãã
第äžã«ãã³ã³ã¹ãã©ã¯ã¿ãŒã§å¿
èŠãªãã©ã¡ãŒã¿ãŒïŒãã®å Žåã¯éå§ç¹ãšçµäºç¹ïŒãæå®ããŠãã°ã©ãã£ãã¯ãªããžã§ã¯ãïŒãã®å Žåã¯è¡ïŒãäœæããŸãã
4çªç®ã« ããªããžã§ã¯ãã®ãã¹ãŠã®ããããã£ãèšå®ããå¿
èŠããããŸãã ãã®äŸã§ã¯ã
SetDatabaseDefaults()
颿°ãåŒã³åºããŠããã¹ãŠã®ããããã£ãããã©ã«ãå€ã«èšå®ããŸãã ãã®é¢æ°ã®å¹³åçãªç·æ§ã®èª¬æã¯ã
ObjectARX Referenceã«ãããŸãã
泚æïŒå®éã«ã¯ãåçŽãªå Žåããã®é¢æ°ã®åŒã³åºãã¯ç¡èŠã§ããŸãããããããªãæ¹ãè¯ã
ãšããæèŠããããŸãã
5çªç®ã« ãäœæãããªããžã§ã¯ããã¢ãã«ç©ºéïŒã€ãŸããå³é¢ïŒã«è¿œå ããå¿
èŠããããŸãã ããã¯ã
AppendEntity()
颿°ã䜿çšããŠè¡ãããŸãã
6çªç®ã« ãäœæãããªããžã§ã¯ãããäœæ¥ãããã©ã³ã¶ã¯ã·ã§ã³ã«è¿œå ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ã
AddNewlyCreatedDBObject()
颿°ã䜿çšããŸããããã¯ãåã®èšäºã§æ¢ã«èª¬æããŸããã
æåŸã« ãå¿
èŠãªãã¹ãŠã®æäœãå®è¡ããåŸã
Commit()
ã¡ãœãããåŒã³åºããŠãã©ã³ã¶ã¯ã·ã§ã³ãã³ãããããå¿
èŠããããŸãã
ãããžã§ã¯ããã³ã³ãã€ã«ããåŸãAutoCADãå®è¡ãããã©ã°ã€ã³ãããŒãããŠ
HabrCommandã³ãã³ããå®è¡ããŸãã çµæã¯ç°¡åã§ã-ããããç§ã¯ãçè§£å¯èœã§äºæž¬å¯èœã§ããããšãæã¿ãŸãã

ã³ãã³ããéå§ããåŸãç»é¢ã«è¡ã衚瀺ãããªãã£ãå Žåã¯ãæ¥ãã§åæºããªãã§ãã ããã 代ããã«ã座æšã®äžå¿ïŒãã€ã³ãïŒ0; 0ïŒïŒãå¯èŠã®äœæ¥é åå
ã«ããããšã確èªããŠãã ããã ããã«ãããŠã¹ãã€ãŒã«ãåããŠã¹ã±ãŒã«ã倿Žããã®ãçã«ããªã£ãŠããŸãã
åå¿è
ãŠãŒã¶ãŒã«ãšã£ãŠãAutoCADã¯ãå³é¢ã®ã¹ã±ãŒãªã³ã°ãç¹å®ã®å¶éå
ã§çºçããããšã«é©ããæãããããããŸããã ç°¡åã«èšãã°ã1000ïŒ
ã®ã¹ã±ãŒã«ãã1ïŒ
ã®ã¹ã±ãŒã«ã«åãæ¿ããããšã¯äžå¯èœã§ããããŠã¹ãã€ãŒã«ãæ°åã¹ã¯ããŒã«ãããšãã¹ã±ãŒã«ã¯ç®ã«èŠããªããªããã¿ãŒã«ãæ®ãããŸãã å³é¢ã®ã¹ã±ãŒãªã³ã°ãç¶è¡ããã«ã¯ãAutoCADã³ãã³ãã©ã€ã³ã§
REGENã³ãã³ããå®è¡ããå¿
èŠããããŸãã
泚æïŒå人çãªçµéšããïŒ
ããã°ã©ããŒãå®å
šã«ééã£ãŠãããäœæããããªããžã§ã¯ããšäœæããããªããžã§ã¯ããæç¢º
ã§ãªãå Žåãã¯ãªãŒã³ãªå³é¢ãéããç®çã®ã³ãŒããå®è¡ããããŒã®çµã¿åãããCtrl + AããæŒããŠå³é¢å
ã®ãã¹ãŠã®ãªããžã§ã¯ããéžæã§ããŸã ãã®åŸãååãšããŠãäœæããããªããžã§ã¯ããèŠã€ããããšã¯é£ãããããŸããã
äŸã§å·ãããŸãããã
å¡è£
åïŒ
ããŠãããã®è¡ã¯ã©ãã§ããïŒïŒ
å¡è£
åŸïŒ
ã¢ãã¿ãŒäžã®ã»ããã®ãããªãµããããé ã®ããç·ã¯ãéãåè§ãšè¡šç€ºããããªããžã§ã¯ãããããã£ãŠã£ã³ããŠã§ç€ºãããŸãã
ããªã©ã€ã³
ç¹°ãè¿ããŸãããäŸã¯
ããã¥ã¡ã³ãã«ãã
ãŸã ïŒ
translation ïŒã
ããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand")] public void HabrCommand() { // Document acDoc = acad.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // (Model Space) - BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Polyline acPolyline = new Polyline(); // acPolyline.SetDatabaseDefaults(); // acPolyline.AddVertexAt(0, new Point2d(2, 4), 0, 0, 0); acPolyline.AddVertexAt(1, new Point2d(4, 8), 0, 0, 0); acPolyline.AddVertexAt(2, new Point2d(6, 6), 0, 0, 0); acPolyline.AddVertexAt(3, new Point2d(8, 11), 0, 0, 0); // acBlkTblRec.AppendEntity(acPolyline); // acTrans.AddNewlyCreatedDBObject(acPolyline, true); // acTrans.Commit(); } }
çµæïŒ

ããã§ç¹ã«èª¬æããããšã¯ãããŸããã å¿
èŠã«å¿ããŠãæ°ãããã€ã³ãã远å ããããšã§ãããªã©ã€ã³ã
ãããªãŒãã¹ã§ã¯ãªãè€éãªå¹ŸäœåŠå³åœ¢ã«å€ããããšãã§ããŸã-ããšãã°ãã¢ã¹ã¿ãªã¹ã¯...
...ãŸãã¯ããã¯ãããªãŒãã¹ã§ããïŒ [CommandMethod("HabrCommand")] public void HabrCommand() {

ã¯ãããããªãŒã«ã¯è»èŒªããããŸããã ããããç§ãã¡ã¯ãŸã åãæãæ¹æ³ãç¥ããŸããããåè§ãè»èŒª...ãããããã®ããã«ä¹ãããšããå§ãããŸãã
ååš
ããã¥ã¡ã³ãããç±å¿ã«è»¢èŒãããå³é¢ã«åã远å ããäŸãèããŠã¿ãŸãããïŒãªã³ã¯ã¯äžã«ãããŸããïŒã
ããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand")] public void HabrCommand() { // Document acDoc = acad.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // (Model Space) - BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Circle acCircle = new Circle(); // acCircle.SetDatabaseDefaults(); acCircle.Center = new Point3d(2.5, 3.14, 0); acCircle.Radius = 4.25; // acBlkTblRec.AppendEntity(acCircle); // acTrans.AddNewlyCreatedDBObject(acCircle, true); // acTrans.Commit(); } }
å³é¢ã«åã远å ããŠãåé¡ã¯ãããŸãããäžå¿ãšååŸãèšå®ããã ãã§ãã
çµæïŒ

泚æïŒéæ¥åç·ã䜿çšããå Žåãç»é¢ã«æ£ãã衚瀺ãããªãå Žåãããããšã«æ³šæããŠãã ããã
ç¹ã«ããã®äŸã§
HabrCommandã³ãã³ããé è·é¢ã§å®è¡ããŠããã倧å¹
ã«ãºãŒã ã€ã³ïŒæç»èŠçŽ ããºãŒã ã€ã³ïŒãããšãäžã®å³ã«ç€ºã广ã芳å¯ãããŸãã ããAutoCADã§äœæ¥ãã人ã¯ããããæ
£ããŠããã§ãããããç§ã®ãµãŒã¯ã«ãäœã«å€ãã£ãããæåã«èŠããšããç§ã¯éåžžã«é·ãéã³ãŒãã®ééããæ¢ãããã¬ã³ããªã³ã°ç²ŸåºŠãäžãããããã«æ°æéãæ®ºããŸãããïŒ

åã®å
ã®åœ¢ç¶ã埩å
ããã«ã¯ãAutoCADã³ãã³ãã©ã€ã³ã§
REGENã³ãã³ããå®è¡ããŸãã

ç¹°ãè¿ããŸããããã®ãããªå¹æã¯
衚瀺ããããšãã«ã®ã¿çºçããããšã匷調ã
ãŸã ã ææžå
ã§ã¯ãã ããå€ã«ããããã«èŠããŠããåã¯åžžã«åã®ãŸãŸã§ãã
æ¥å
æ¥åãäœæããããšã¯ãåãäœæããããšãšã¯å€å°ç°ãªããŸãããã®ãã©ã¡ãŒã¿ãŒã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒã§æç€ºçã«æå®ããå¿
èŠããããŸãïŒè©³çްã¯ã
ããã§èª¬æããŸã ïŒã
ããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand")] public void HabrCommand() { // Document acDoc = acad.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // (Model Space) - BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Point3d center = Point3d.Origin; Vector3d normal = Vector3d.ZAxis; Vector3d majorAxis = 100 * Vector3d.XAxis; double radiusRatio = 0.5; double startAng = 0.0; double endAng = Math.PI * 2; // , Ellipse acEllipse = new Ellipse(center, normal, majorAxis, radiusRatio, startAng, endAng); // acBlkTblRec.AppendEntity(acEllipse); // acTrans.AddNewlyCreatedDBObject(acEllipse, true); // acTrans.Commit(); } }
çµæïŒæç¢ºåã®ããã«éãç·ã远å ãããŸããïŒïŒ

æ¥åãäœæãããšããæ¬¡ã®ãã©ã¡ãŒã¿ãŒãèšå®ããŸãã
- æ¥åã®äžå¿-ããã§ãã¹ãŠãæç¢ºã«ãªããŸãã
- æ³ç·ã¯ãæ¥åã®å¹³é¢ã«åçŽãªãã¯ãã«ã§ãã ãªããžã§ã¯ããXYå¹³é¢ã«è¿œå ãããšãæ³ç·ã¯Z軞ã«ãªããŸãã
- 䞻軞ïŒmajorAxisïŒ-AutoCADã®çšèªã§ã¯ãããã¯é·ããæ¥åã®ãå¹
ãã®ååã«çãããã¯ãã«ã§ãïŒå³ã®éãç·ã®ããã«ïŒã éåžžã®æ°åŠã§ã¯ãããã¯ãåé·è»žããšåŒã°ããŸãã ãã®äŸã§ã¯ã暪軞ãšäžèŽããæ¹åã«é·ã100ã®ãã¯ãã«ãèšå®ããŸãã
- RadiusïŒradiusRatioïŒ-æ¥åã®é·ããæ±ºå®ããŸãã ãã®äŸã§ã¯ãYè»žã«æ²¿ã£ãæ¥åã®æå€§åº§æšã¯100 * 0.5 = 50ã§ãã
- éå§è§åºŠãšçµäºè§åºŠ-æ²ç·ãæãããã®éå§è§åºŠãšçµäºè§åºŠãå®çŸ©ããŸãã ãã®åçã¯ãããããåãããäžã®åçã§ãã説æãããŠããŸã ã

å³å
šäœãæãã«ã¯ã360床ãŸãã¯2piïŒæ¥µåº§æšç³»ã®å ŽåïŒã®å®å
šãªåããå®è¡ãããå¿
èŠããããŸãã å°ãªãæå®ãããšãå³ã®äžéšã®ã¿ã衚瀺ãããŸãã
æ¥åã®å¥ã®äŸãæ¥åã®æ°ãããã©ã¡ãŒã¿ãŒãèšå®ããŠã¿ãŸãããã
Point3d center = Point3d.Origin; Vector3d normal = Vector3d.ZAxis; Vector3d majorAxis = 100 * Vector3d.XAxis + 100 * Vector3d.YAxis; double radiusRatio = 0.5; double startAng = Math.PI * 0.1; double endAng = Math.PI * 1.3; Ellipse acEllipse = new Ellipse(center, normal, majorAxis, radiusRatio, startAng, endAng);
次ã®ããã«ãªããŸãïŒåããç°¡åã«ããããã«ç·ãåŒãããŠããŸãïŒã

startAng
ãŒããã倧ãããããæ¥åã®äžéšã¯è»žããã¯éå§ãããŸããããå°ãå
ã«ãªããŸãã
endAng
ã¯
endAng
ããŸãå°éããªããããæ¥åã®äžéšã¯
endAng
ãããã¯ããã«æ©ãçµäºããŸãã
åŸæã¯ã軞ãã¯ãã«ïŒ
majorAxis = 100 * Vector3d.XAxis + 100 * Vector3d.YAxis
ïŒãèšå®ããããšã«ããä¿èšŒãããŸãã ãã®ãã¯ãã«ã®Xæåã®å€§ããã¯Yæåãšçããããã45床ã®åŸé
ãåŸãããŸãã
å軞ã®é·ãã¯ãã¿ãŽã©ã¹ã®å®çã«ãã£ãŠèšç®ã§ããŸãïŒããã¯ã座æšXãšYã®å¹³æ¹åã®å¹³æ¹æ ¹ã§ãã1002 + 100
2 ïŒåèš20,000ïŒã®å¹³æ¹æ ¹ãèšç®ãããšãçŽ141ã«ãªããŸããæ¥åã®é·ãã¯ããããçŽ282ã«ãªããŸãã
ãµãŒã¯ã«
åãäœæããã«ã¯ããããã³ã°-
Hatch
ïŒ
documentation ã
translation ïŒã䜿çšã§ããŸãã
æé ã¯æ¬¡ã®ãšããã§ãã
- ãããå¢çç·ãäœæããŸãã éããæ²ç·ã¯å¢çãšããŠæ©èœã§ããŸãããã®å Žåãåã«ãªããŸãã
- ãããã³ã°å¢çç·ã«å¿
èŠãªããããã£ãèšå®ããŸãã
- å³é¢ã«ãããã³ã°å¢çç·ã远å ããŸãã
- ãããã®å¢çãšãªããªããžã§ã¯ãã®é
åãäœæããããã«å¢çã远å ããŸãã
- ããããäœæããŸãã
- å³é¢ã«ãããã远å ããŸãã
- ãããã³ã°ã«å¿
èŠãªããããã£ãèšå®ããŸãã
æé ã远å ãããŸãããããã¹ãŠç°¡åã§ãã
ããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand")] public void HabrCommand() { // Document acDoc = acad.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // (Model Space) - BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // 1) - Circle acCircle = new Circle(); // 2) acCircle.SetDatabaseDefaults(); acCircle.Center = new Point3d(2.5, 3.14, 0); acCircle.Radius = 4.25; // 3) acBlkTblRec.AppendEntity(acCircle); acTrans.AddNewlyCreatedDBObject(acCircle, true); // 4) - ObjectIdCollection acObjIdColl = new ObjectIdCollection(); acObjIdColl.Add(acCircle.ObjectId); // 5) Hatch acHatch = new Hatch(); // 6) acBlkTblRec.AppendEntity(acHatch); acTrans.AddNewlyCreatedDBObject(acHatch, true); // 7) acHatch.SetDatabaseDefaults(); acHatch.SetHatchPattern(HatchPatternType.PreDefined, "SOLID"); acHatch.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(0, 200, 0); acHatch.Associative = true; acHatch.AppendLoop(HatchLoopTypes.Outermost, acObjIdColl); acHatch.EvaluateHatch(true); // acTrans.Commit(); } }
çµæïŒ

ãããã®å¢çç·ãäœæããéšåã¯åé¡ãåŒãèµ·ãããªãã¯ãã§ã-ããã¯ãç§ãã¡ãäœæããŠå³é¢ã«é
眮ããåãªãåã§ãã ãããã³ã°ãäœæãããå³é¢ã«è¿œå ãããéšåã説æã®å¿
èŠã¯ãããŸããã ãããã³ã°ãã©ã¡ãŒã¿ãŒãèšå®ããéšåãæ®ã£ãŠããŸãã ããã«è©³ããèŠãŠãããŸãããã
æåã«ã
setDatabaseDefaults()
颿°ãåŒã³åºããŸãããã®é¢æ°ã¯ããããã³ã°ãªãã·ã§ã³ãããã©ã«ããªãã·ã§ã³ã«èšå®ããŸãã ãã®æ©èœã®ç®çã«ã€ããŠã¯ãæåã®ã»ã¯ã·ã§ã³ã§èª¬æããŸããã
次ã«ã
SetHatchPattern()
颿°ã䜿çšããŠãããã³ã°ã®ã¿ã€ããæå®ããŸãã ãã®å ŽåãèŠåçãªåãæãããã®ã§ã
SOLID
ã¿ã€ã-ãsolidããéžæããŸãã
泚æïŒãœãªããã«å ããŠãå¥ã®ã¿ã€ãã®ãããã³ã°ãæå®ã§ããŸãã AutoCADã«ã¯ãããã«äœ¿çšã§ãã倿°ã®ããããçšæãããŠããŸããããããèŠã€ããã«ã¯ãHatchãªããžã§ã¯ãã®ããããã£ãåŒã³åºãã ãã§ãã

SOLID
代ããã«
SOLID
ä»ã®äœããæå®ã§ããŸãã ããšãã°ã
HOUND
ãæå®ãããšã次ã®çµæãåŸãããŸãã

æšæºã®
HatchPatternType.PreDefined
ïŒ
HatchPatternType.PreDefined
ïŒã«å ããŠã以åã«AutoCADã«æ¥ç¶ãããŠãããµãŒãããŒãã£ã®
HatchPatternType.PreDefined
ã䜿çšã§ããŸãã ããã«äŸãžã®
ãªã³ã¯ããããŸãã
ãããã³ã°ã®ã¿ã€ããèšå®ããåŸã
FromRgb(byte ref, byte blue, byte green)
颿°
FromRgb(byte ref, byte blue, byte green)
ã䜿çšããŠè²ïŒ
Color
ããããã£ïŒãæå®ããŸããã
次ã«ã
Associative
ããããã£ãç¶ããŸã-å¢çç·ã®ãµã€ãºã倿Žãããšãã«ãããã³ã°ã®ãµã€ãºã倿Žãããã©ãããæ±ºå®ããŸãã
ã€ã©ã¹ããããã®å¢çç·ã倿ŽãããšãäŸïŒ
Associative = true
ïŒã§äœãèµ·ãããã瀺ããŸãã

åã®æ°ããååŸã¯5ã§ããããã³ã°ã¯æ°ããååŸã®äžã«åŒã䌞ã°ãããŸãã
ãããŠãããã¯
Associative = false
äŸã§ãïŒ

ããã¥ã¡ã³ã ïŒ
翻蚳 ïŒã®ãDefine the Hatch BoundariesïŒ.NETïŒãã»ã¯ã·ã§ã³ã§ã¯ããããã¯ããŒãã«ïŒã€ãŸãã¢ãã«ç©ºéïŒã«ã·ã§ãŒãã£ã³ã°ã远å ããåŸã
AppendLoop
ã¡ãœãããåŒã³åºãåã«ã
Associative
ããããã£ãèšå®ããå¿
èŠããããšè¿°ã¹ãŠããŸãã
AppendLoop
ã¡ãœããã䜿çš
AppendLoop
ãšããããã®å€åŽã®å¢çç·ãæå®ã§ããå
¥åãšããŠ2ã€ã®ãã©ã¡ãŒã¿ãŒïŒå¢çç·ã®çš®é¡ãšãããå¢çç·ãªããžã§ã¯ãã®é
åïŒãåãå
¥ããŸãã
æåã®ãã©ã¡ãŒã¿ãŒãšããŠç€ºããããHatchLoopTypes.Outermost
ããããã³ã°ã®å€åŽã®å¢çç·ãèšå®ããããšã瀺ããŠããŸãã2çªç®ãšããŠã以åã«äœæããããããã³ã°å¢çç·ãªããžã§ã¯ãã®é
åã瀺ããŸãããæ³šæïŒå¿
èŠã«å¿ããŠãå€éšã«å ããŠããã€ãã®å
éšå¢çç·ãæå®ãããããã亀差ãããšãã®ãããã³ã°ã®åäœã決å®ã§ããŸãã詳现ã¯ãã¡ãããã®ãããªå³ã®ç°¡åãªäŸã«éå®ããŸãã
ããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand")] public void HabrCommand() { // Document acDoc = acad.DocumentManager.MdiActiveDocument; Database acCurDb = acDoc.Database; // using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction()) { // BlockTable acBlkTbl; acBlkTbl = acTrans.GetObject(acCurDb.BlockTableId, OpenMode.ForRead) as BlockTable; // (Model Space) - BlockTableRecord acBlkTblRec; acBlkTblRec = acTrans.GetObject(acBlkTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord; // Polyline acPolyline = new Polyline(); acPolyline.SetDatabaseDefaults(); acPolyline.AddVertexAt(0, new Point2d(50, 50), 0, 0, 0); acPolyline.AddVertexAt(1, new Point2d(150, 285), 0, 0, 0); acPolyline.AddVertexAt(2, new Point2d(250, 50), 0, 0, 0); acPolyline.AddVertexAt(3, new Point2d(25, 200), 0, 0, 0); acPolyline.AddVertexAt(4, new Point2d(275, 200), 0, 0, 0); acPolyline.AddVertexAt(5, new Point2d(50, 50), 0, 0, 0); acBlkTblRec.AppendEntity(acPolyline); acTrans.AddNewlyCreatedDBObject(acPolyline, true); // - ObjectIdCollection acObjIdColl_OUTER = new ObjectIdCollection(); acObjIdColl_OUTER.Add(acPolyline.ObjectId); // Circle acCircleOut = new Circle(); acCircleOut.SetDatabaseDefaults(); acCircleOut.Center = new Point3d(150, 165, 0); acCircleOut.Radius = 25; acBlkTblRec.AppendEntity(acCircleOut); acTrans.AddNewlyCreatedDBObject(acCircleOut, true); // - ObjectIdCollection acObjIdColl_INNER = new ObjectIdCollection(); acObjIdColl_INNER.Add(acCircleOut.ObjectId); // Hatch acHatch = new Hatch(); acBlkTblRec.AppendEntity(acHatch); acTrans.AddNewlyCreatedDBObject(acHatch, true); // acHatch.SetDatabaseDefaults(); acHatch.SetHatchPattern(HatchPatternType.PreDefined, "SOLID"); acHatch.Color = Autodesk.AutoCAD.Colors.Color.FromRgb(200, 0, 0); acHatch.Associative = false; acHatch.HatchStyle = HatchStyle.Normal; // acHatch.AppendLoop(HatchLoopTypes.Outermost, acObjIdColl_OUTER); // acHatch.AppendLoop(HatchLoopTypes.Default, acObjIdColl_INNER); acHatch.EvaluateHatch(true); // acTrans.Commit(); } }
ããã§ãäœæããããããã³ã°ã®ãã¹ãŠã®ãã©ã¡ãŒã¿ãŒãå®çŸ©ãããŸãããç»é¢ã«ãããã³ã°ã衚瀺ããã«ã¯ãAutoCADãå¿
èŠãªèšç®ãå®è¡ããå¿
èŠããããŸãããããã®èšç®ãå®è¡ããã«ã¯ã颿°ãåŒã³åºãå¿
èŠããããŸãEvaluateHatch()
ããããã³ã°ã®äœæã«å¿
èŠãªãã¹ãŠã®ã¢ã¯ã·ã§ã³ãå®äºããŸãããæé 6ã§æ¢ã«å³é¢ãšãã©ã³ã¶ã¯ã·ã§ã³ã«è¿œå ããŸãããããã§ãAutoCADã倿Žãä¿åã§ããããã«ãã©ã³ã¶ã¯ã·ã§ã³ãä¿®æ£ããŸããæåŸã«-åã«é¢ããå¥ã®ã¡ã¢ãããã°ã©ããŒã§ããããAutoCADã§çŽæ¥å³é¢ãæäœããå¿
èŠãããå ŽåããããŸãïŒä»¥äžã®èšäºã®1ã€ã§ããã€ãããã¯ãããã¯ã«ã€ããŠã話ããããã£ãã®ã§ãããããã¯ç¹ã«åœãŠã¯ãŸããŸãïŒããã®å Žåãåãäœæããæãç°¡åãªæ¹æ³ã¯ãAutoCADã³ã³ãœãŒã«ã§DONUTã³ãã³ãã䜿çšããããšã§ããæ§æã¯æ¬¡ã®ãšããã§ãã DONUT < > < > <>
DONUT :
DONUT 0 25 50,50 DONUT 25 75 200,50

, â ?)
PS
ãã®èšäºã¯éåžžã«ã·ã³ãã«ã§ããããšã倿ããŸãããããã¹ãŠãæç¢ºã§ã¢ã¯ã»ã¹ãããããã®ã§ããããšãé¡ã£ãŠããŸããAutoCAD .NET APIã䜿çšãããšãå匧ãã¹ãã©ã€ã³ãªã©ã®ããè€éãªåœ¢ç¶ãæç»ã§ããŸããããããã䜿çšããããšã¯ã§ããŸããã§ãããããã«é¢ããæ
å ±ã¯ãå¿
èŠã«å¿ããŠãããã¥ã¡ã³ãïŒç¿»èš³ïŒã§èŠã€ããããšãã§ããŸããäžè¬ã«ãç§ã¯ããã§ããã¹ãã®è¿œå ãšç°¡åãªãããã¯ã®äœæã«ã€ããŠè©±ãã€ããã§ãããããã§ã«ããªããŸãšããªãã®ããããŸããããããã£ãŠããããã®åé¡ã¯æ¬¡ã®èšäºã§åãäžããŸãããæž
èŽããããšãããããŸããïŒ
ã³ã¡ã³ãã§ã¯ããã£ãŒãããã¯ãã³ã¡ã³ããææ¡ãæè¿ããŸãã