ç§ã®æèŠã§ã¯ãäœããåŠã¶æè¯ã®æ¹æ³ã®1ã€ã¯ãä»ã®äººãšç¥èãå
±æããããšã§ãã
ä»åã¯ãMultiCAD.NET APIã䜿çšããŠNanoCADã§ã«ã¹ã¿ã ãªããžã§ã¯ããäœæããæ¹æ³ãçè§£ããå¿
èŠããããŸããã Nanosoftã®ããã°ã«ã¯ã2013幎ã®èšäºãããã
ã«ã¹ã¿ã ããªããã£ãã
äœæããéã®åºæ¬çãªåé¡ã«ã€ããŠèª¬æããŠããŸãã ãã ãããã®èšäºãåçŽã«è€è£œããããšã¯é¢çœããªãããšã«åæãããããå°ãè£è¶³ããŸãã
ããã§ã¯
ãæ¬äŒŒ3次å
ãã¢ãäœæããŸã ããã®
ãã¢ãééã§ããŸãã ãããŠãç§ãã¡ã®å°ããªãã¢ãå€ç¬ã«ãªããªãããã«ã圌女ã®ããã«åœŒå¥³ãäœããŸã-åãå£ã§ãã
ãã®å Žåã®ãç䌌3Dããšããçšèªã¯ããªããžã§ã¯ãããœãªããããã£ã®ã¢ãã«ã®ããããã£ãæããªãããšãã€ãŸãã3次å
座æšç³»ã§æ¥ç¶ããã幟äœããªããã£ãã®ã»ããã«ãããªãããšãæå³ããŸãã ãã¶ãããã¯å®å
šã«æ£ããçšèªã§ã¯ãªããããããŸãããããããŸã§ã®ãšããç§ã¯ãã以äžè¯ããã®ãåãäžããŠããŸããã
æ®å¿µãªãããç§ã¯çŸåšããã°ã©ããŒãšåŒã°ããããšã¯ã§ããªãã®ã§ããã®èšäºã¯åå¿è
ããåå¿è
ãŸã§ããããããã¹ãŠã®ã³ãŒãã®ã¹ã¿ã€ã«ã«ãªããããã«åºäŒããã¯ããã¯ã¯æ¹åãããå¯èœæ§ããããŸãã
èšèšãCADãNanoCADã.NETåãã®éçºãç¹ã«CïŒãçŸãš
ã»ãµãã¹ããªãŒãã«èå³ããããªãããã®èšäºã¯ããããããªãã ãã®ãã®ã§ãã
ãŸããçŸãšã»ãµãã¹ããªãŒãã¯ã©ãã«ããã®ã§ããããïŒ ããããç«ã®äžã§æè¿ãããŠããŸãã

ç§ã¯åçãªäžæåæ¢ããšã¹ã«ã¬ãŒãããŸãããçŸã¯ç§ãã¡ã仿¥ããããšã®æå³ã®ç¡ãã説æããããã®é phorã§ãïŒå°ãåŸã®åçïŒã
ããŠãã»ãµãã¹ããªãŒãã¯ãæè¿èŠããŠããã ãã§ããããã人圢ã®ã²ã©ããã¹ã¿ã«ãžã¢ã«æãããã®ã§ãåäžã®ã¹ã¿ã€ã«ã®ã¹ããŒãªãŒããªã³ã°ã«èããããããã«ãªããŸããã
ãããããé°è¬ãããã»ã©æ©ãæããã«ããã®ã¯æãã ã£ãã®ã§ããããïŒ ããããåŒãç¶ãèšäºãèªã¿ç¶ããŠãã ããã
å
容ïŒ
ããŒãIïŒæ°ããCADã䜿çšããŠïŒ ïŒã¯ããã«ïŒãããŒãIIïŒNanoCAD 8.5ã®ã³ãŒãã®èšè¿°ããŒãIIIïŒã³ãŒããç¡æã®NanoCAD 5.1ã«é©åãããããšããŠããŸããããŒãIVïŒMultiKukishïŒçµè«ïŒ1.æ°ããCADã§ïŒ ïŒã¯ããã«ïŒã

ãŸããNanoCAD 8.5 SDKã®å®å®ããŒãžã§ã³ã
NanoCADéçºè
ããŒã¿ã«ã§å©çšå¯èœã«ãªããŸãããä»åã¯ããã«çŠç¹ãåœãŠãŸãã
NanoCAD 8.1ã«çŠç¹ãåœãŠãç§ã®ååã®èšäºã§ã¯ããã©ãããã©ãŒã ã«é¢ããæèŠãå
±æããã¢ã»ã³ããªã®ãããžã§ã¯ããæºåããããã»ã¹ãæ€èšããç°¡åãªã³ãã³ããäœæããŸããããã®ãããNanoCADãšMultiCAD .NET APIã䜿çšããéçºã«å®å
šã«æ
£ããŠããªãå Žåã¯ãéå§ã§ããŸã
ãScarless Faceãã®èšäº
ãŸãã¯Multicad.NET API 7ã®æåã®æé ïŒNanocad 8.1ã®å ŽåïŒä»åã¯ããæ°Žã泚ããããšãæžãããæè¡é¢ã«ãã£ãšæ³šæãæãäºå®ã§ãã
ç§ãã¡ã®æœèšã®éçºã«ç§»ãåã®å¯äžã®ããšã¯ããã®èšäºãå§ããåã«ãæ¬è³ªçã«2013幎ã«ãã§ã«ãªãªãŒã¹ãããNanoCADïŒNC 5.1ïŒã®ç¡æçã®ã¿ã䜿çšãããšããããšã§ãã
ããã«ã¯2ã€ã®çç±ããããŸããããã¯ããããç®çã§å®å
šã«ç¡æã§ããã2çªç®ã®çç±ã¯ç§ãéåžžã«åŒ±ãã³ã³ãã¥ãŒã¿ãŒã䜿çšããŠãããããAutoCADãé
ããªããè² è·ãéåžžã«ãããããšã§ãã
ãããããã®èšäºãæžãåã«ãããã³ãã§ãªããžã§ã¯ããæç»ããç·Žç¿ããããªããžã§ã¯ãã®3D衚瀺ã®ä»çµã¿ãçè§£ããæãéèŠãªããšãšããŠããããã°ããã»ã¹ã§10,000åCADãåèµ·åããå¿
èŠããã£ããããNanoCAD 8.5ãå°ã調ã¹ãŸããã
ãããã£ãŠãäžèŠãããšãå€ãç¡æããŒãžã§ã³ãããæç»ããæ¹ãå¿«é©ã§ãããå€ãNanoCAD 5.1ãšåããããéãèªã¿èŸŒãŸããŸããã€ãŸããNC 8.5ã¯ä»ã®ãã¢ãããæ°åéãèµ·åããŸã-AutoCAD 2017ã¹ããããŠã©ããã«ããèšæž¬ïŒã ãã€ãäŒç€Ÿãç¡æçãæŽæ°ãããé»åçé倧æãã®æ©èœã«é¢ããæ°ããAPIãšæ°ãããããã«ç§»è¡ããããšãæåŸ
ããã ãã§ãã
æåŸã«ãéçºè
ãå©çšã§ããNanoCADã®ããŒãžã§ã³ã§çè§£ããŠããããã«ã3Dãœãªããã¢ããªã³ã°ã¢ãžã¥ãŒã«ãå«ãŸããŠããŸãããç¹ã«ãŠãŒã¶ãŒãäœæãããªããžã§ã¯ãã®å Žåã¯ãããã«APIãçè§£ã§ããŸããã§ããã æ¬¡åã¯å匷ãããããããŸããã ãããŸã§ã®éããç䌌3Dããªããžã§ã¯ãã«æºè¶³ããŸãã
ããã«ã¯ç¬èªã®å©ç¹ããããŸããå°ãé©å¿ããåŸã®ã©ã€ãã©ãªã¯ãç¡æã®NanoCAD 5.1ã§éå§ããããœãªããã¢ããªã³ã°ã¯ãŸã£ãããããŸããã ããããããã«ã€ããŠã¯åŸã§ã
2. NanoCAD 8.5ã§ã³ãŒããèšè¿°ããŸã

ã¯ããã¯ãããã©ã³ã»ã¶ããã¯äŒ¯çµã¯ãã¹ãŠãæ£ããæ°ããŸããïŒ ããããã®çŸãå£ããã¢ãæåŸãŸã§èŠããšãçµããã«ãªããŸãã ããã§ããµã€ã³ã«ãŠã³ãã«æ°ããã¿ã¹ã¯ããããŸã-èšäºã®ãã¥ãŒãšæç¥šãã«ãŠã³ãããŸãã
ç§ã¯ãã§ã«ããããŸã£ããã«èãããšãã§ããŸãïŒã1ã1ãã¥ãŒã2-2ãã¥ãŒã3 ...ãéåžžã©ãããå®å
šãªã¯ã©ã¹ã³ãŒããšdwgãã¡ã€ã«ã®äŸã¯
GitHubã«ãããŸã ã
ãããŠä»ããããéšåã«åè§£ãå§ããŸãã æ¢è£œã®ã¢ã»ã³ããªãé©çšããŸããã§ããããããžã§ã¯ããèªåã§çµã¿ç«ãŠãããšãã§ãããšæããŸãã
åã®èšäºã§ ãNanoCAD 8.1çšã«MS Visual Studio 2015ã®ãããžã§ã¯ããäœæããã³æ§æããæ¹æ³ãåçã§è©³ãã説æããŸããã
ãããã£ãŠãä»åã¯ãNanocad 8.5ã§ãã«ãããæé ã«ã€ããŠç°¡åã«èª¬æããŸãã
- æ°ãããããžã§ã¯ããäœæãã.NET Framework 4ãã©ãããã©ãŒã ãéžæããCïŒã¯ã©ã¹ã©ã€ãã©ãªããã³ãã¬ãŒããšããŠéžæããŸãã
- Nanocadã®x64ããŒãžã§ã³ïŒããã³1ã€ãããŸãïŒã®SDK \ include-x64 \ãã©ã«ããããmapibasetypes.dllãmapimgd.dllãimapimgd.dllãžã®ãããžã§ã¯ããªã³ã¯ã远å ããŸãã 3ã€ã®ã©ã€ãã©ãªãã¹ãŠã«ã€ããŠãããŒã«ã«ã«èšå®ãããããããã£ãFalseã«ã³ããŒããããšãå¿ããªãã§ãã ããã
- ãŸããMicrosoftã®ã¢ã»ã³ããªãªã³ã¯System.Windows.Forms.dllãSystem.Drawing.dllã远å ããŸãã
- ãããžã§ã¯ãããããã£ã®[ãããã°]ã¿ãã§ãèµ·åæã®ã¢ã¯ã·ã§ã³ãšããŠ[å€éšããã°ã©ã ã§éã]ãéžæããNC 8.5å®è¡å¯èœãã¡ã€ã«ãžã®ãã¹ãæå®ããŸãïŒCïŒ\ Program Files \ Nanosoft \ nanoCAD x64 Plus 8.5 \ nCad.exeããããŸãïŒ ïŒ
- ãã¢ãšå£ã«ããããDoorPseudo3D.csãšWalllPseudo3D.csã®2ã€ã®ã¯ã©ã¹ãäœæããŸãããã
- ã¢ãã¬ã¹CïŒ\ ProgramData \ Nanosoft \ nanoCAD x64 Plus 8.5 \ DataRWïŒå€æŽãããå ŽåããããŸãïŒã«ç§»åããæ¬¡ã®å
容ã®ãã¡ã€ã«load.configãæ€çŽ¢ãŸãã¯äœæããŸã
<root> <list> <module path="C:\Users\...\bin\Debug\nanodoor2.dll"/> </list> </root>
ãããžã§ã¯ãã®ååã¯åœç¶ãããŸããããããžã§ã¯ããžã®ãã¹ã¯ç°ãªãå ŽåããããŸãã
ããŠãããã§éçºã®æºåã¯å®äºã§ããF5ãæŒããšãNC 8.5ãèªåçã«èµ·åããã¢ã»ã³ããªãçŽã¡ã«èªã¿èŸŒãŸããŸããéçºãããã³ãã³ããå
¥åããã ãã§ãã
ããäžåºŠç³ãäžããŸãããç§ã¯ããã°ã©ããŒã§ã¯ãªããããã³ãŒãã«å€ãã®æ¬ é¥ãããå¯èœæ§ããããŸãããªããžã§ã¯ãã®ä¿åãç§»åãã³ããŒæã®å€±æãããã³åã«æé©ã§ãªããœãªã¥ãŒã·ã§ã³ã§ãã 誰ãããã³ãŒãã倧ããè€éã«ããããšãªãããšãŽãæãèµ·ããããããšãã§ãããªãããå°é¢ã«åŒãã
ããããäœããã®æ¹æ³ã§ããã®ã³ãŒãã«åºã¥ããŠãããªããšç§ã¯ãªããžã§ã¯ããäœæããæ¹æ³ãå°ãçè§£ããããšãã§ããŸããã€ãŸãã圌ã¯äž»ãªç®æšãéæããŸãã
ãã¡ãããNanoCADéçºè
ãã©ãŒã©ã ã®Alexander Polkhovskyã«å€§ãã«æè¬ããªããã°ãªããŸããã圌ã¯ãªããžã§ã¯ãã®ç§»åãšå転ã«é¢é£ããæ©èœã®åå®çŸ©ïŒãã¢ã®ééã«åœ¹ç«ã€ïŒã倧ãã«å©ããŠãããŸããã ãããŠãä»ã®ãã¹ãŠã®ãã©ãŒã©ã åå è
ã®ãããã§ãããã¯çŸæç¹ã§MultiCAD.NET APIã«é¢ããæãã¢ã¯ã»ã¹ããããæ
å ±æºã®1ã€ã§ããããšãæãåºãããŠãã ããã
å®è¡ãããç°¡åã§ãããããå£ããå§ããŸãã
ãŸããåå空éã远å ããŸãããã
using System; using System.Collections.Generic; using System.ComponentModel; using Multicad.Runtime; using Multicad.DatabaseServices; using Multicad.Geometry; using Multicad.CustomObjectBase; using Multicad;
次ã«ãã«ã¹ã¿ã ãªããžã§ã¯ãã¯ã©ã¹ãäœæããŸãã
namespace nanowall2 {
奜ããªã¯ã©ã¹åã䜿çšããŸãïŒç§ã®ãã®ãæ®ãããšãã§ããŸãïŒãäž»ãªããšã¯ãMcCustomBaseããç¶æ¿ããããšã§ãã
ãã¹ãŠã®ã¯ã©ã¹å±æ§ãå¿
èŠã§ããæ£çŽã«èšããšãCustomEntity屿§ãã©ã¡ãŒã¿ãŒãå®å
šã«çè§£ããŠããªãã®ã§ã顿šããŠæãã«ãããããçŽããŸããã
ã8b0986c0-4163-42a4-b005-187111b499d7ã-ç§ã®äŸã§ã¯ãããã¯GUIDã§ãã.NETããã¥ã¡ã³ãã§ãã®æäœæ¹æ³ã説æããç¬éã«ããã¯ãªãã¯ãããããã§ãã ç°¡åã«èšããšãäžæã«ããããã«æåŸã®æ¡ã眮ãæããŠã¢ã»ã³ããªèšå®ãã¡ã€ã«ããååŸããŸããã ãã¢ã¯ã©ã¹ãšå£ã¯ã©ã¹ã®GUIDãå®å
šã«åãã§ããå Žåãå¥è·¡ãå§ãŸããŸãïŒã³ããŒãããšå£ããã¢ã«å€ããããã¡ã€ã«ãä¿åããåŸã«ãã¢ã®æ©èœã倱ãããŸããèªåã§ä¿®æ£ããŠãåé¡ãçºçããªãããšãé¡ã£ãŠããŸãã
ã¯ã©ã¹ã®ãã£ãŒã«ããå®çŸ©ããŸãã
private Point3d _pnt1 = new Point3d(100, 100, 0); private Point3d _pnt2 = new Point3d(500, 100, 0); private double _h = 2085;
ãã£ãŒã«ã_pnt1ããã³_pnt12ããããã¯å£ã®ãžãªã¡ããªãæ§ç¯ãããããŒã¹ãã€ã³ãã§ãïŒå£ã®é·ãã¯åºæ¬çã«ïŒã_ hã¯ããã©ã«ãã®å£ã®é«ãã§ãïŒãªããžã§ã¯ããäœæããåŸãä¿®æ£ã§ããŸãïŒã
次ã«ãã³ãŒã«ããŒã ãäœæãããã¢ã®æŠèŠã説æããŸãã
CommandMethod屿§ã®DrawWallãããã¯ããªããžã§ã¯ããåŒã³åºãããã«ã³ãã³ãã©ã€ã³ã«å
¥åããã³ãã³ãã®ååã§ããããšãã°ãæ©èœã倱ãããšãªããDWallã«ãã£ãŠççž®ã§ããŸãã
[CommandMethod("DrawWall", CommandFlags.NoCheck | CommandFlags.NoPrefix)] public void DrawWall() { WalllPseudo3D wall = new WalllPseudo3D(); wall.PlaceObject(); }
ããŒã ãå®è£
ããã¯ã©ã¹ã§ã¯ãwallã¯ã©ã¹ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãäœæããŠããŸãïŒãããè¡ãããªãå Žåããã¹ãŠã®å£ã1ã€ã®ãè¶
ãå£ãšããŠèªèãããããã«ãªããŸãïŒã PlaceObjectã¡ãœãããå°ãåŸã§å®çŸ©ããŸãã
ãªããžã§ã¯ããã¬ã³ããªã³ã°ããæé ãå®çŸ©ããŸãã
public override void OnDraw(GeometryBuilder dc) { dc.Clear();
ç§ã¯ãã®éšåãå®å
šã«ã¯çè§£ããŠããŸããããã©ããããããAPIã«ã¯GeometryBuilderã¯ã©ã¹ããããããã«åºã¥ããŠå£ã®ã¹ã«ã«ãããç¶ããŸãã
Dc.Clearã¯ãã¯ã©ã¹ã€ã³ã¹ã¿ã³ã¹çšã«ä»¥åã«æ§ç¯ããããã¹ãŠã®ãžãªã¡ããªãæ¯åã¯ãªã¢ããããã§ãã
ããã«ã·ã³ãã«ã
Point3d pnt1 = _pnt1; Point3d pnt2 = new Point3d(_pnt2.X, pnt1.Y, 0); Point3d pnt3 = new Point3d(pnt2.X, pnt1.Y+150, 0); Point3d pnt4 = new Point3d(pnt1.X , pnt3.Y, 0);
å£ã®ããŒã¹ãšããããæ§ç¯ãããããŒã¹ãšãªã4ã€ã®ããŒã¹ãã€ã³ããå®çŸ©ããæåãš2çªç®ã®ãã€ã³ãã¯ã¯ã©ã¹ã®ãã£ãŒã«ãã«ãªã³ã¯ãããŸããã€ãŸããåŸã§ããããæäœããŸãã å£ã®é·ãã¯ããã€ã³ã_pnt1ãšpnt2ã®éã®è·é¢ã«å¿ããŠæ§ç¯ãããŸãããå£ã®å¹
ã¯åºå®ããã®ãé£ããèšå®ãããŠããŸããïŒç°¡åã«ããããã«è¡ãããŸãïŒãã顿šã«ãã£ãŠäœæ¥ããžãã¯ãç°¡åã«åå®çŸ©ã§ããŸãã
dc.Color-ãªããžã§ã¯ãã®ãããã¯ããããã£ã§è²ãèšå®ããŠããããã§ãã
ãã¯ãã«hvecã¯å£ã®é«ãã§ãããããããŒã¹ã«è¿œå ããŠäžéšãæ§ç¯ããŸãã
次ã«ãå£ã®äžåŽãšäžåŽãæããŸãã
dc.DrawPolyline(new Point3d[] { pnt1, pnt2, pnt3, pnt4, _pnt1 }); dc.DrawPolyline(new Point3d[] { _pnt1.Add(hvec), pnt2.Add(hvec), pnt3.Add(hvec), pnt4.Add(hvec), pnt1.Add(hvec)});
äžéšãšäžéšããªãã§æ¥ç¶ããŸãã
dc.DrawLine(pnt1, pnt1.Add(hvec)); dc.DrawLine(pnt2, pnt2.Add(hvec)); dc.DrawLine(pnt3, pnt3.Add(hvec)); dc.DrawLine(pnt4, pnt4.Add(hvec));
hatchåã®ããã®è±ç²ã®èŒªéãäœæããã¬ã³ã¬brickåã§å¡ãã€ã¶ããŸãïŒhatchåã®ååã¯ããã°ã©ã èªäœã§ç¢ºèªã§ããŸãïŒã ããã«ãããªã©ã€ã³ã®ãªã¹ããã·ã§ãŒãã£ã³ã°ã§ãããæé ã2åç¹°ãè¿ãå¿
èŠããããŸããã ç§ã¯äœããèæ
®ããªãã£ããšæããŸãã
ãããã³ã°ããŠããã®ã¯2ã€ã®å£é¢ã®ã¿ã§ã-äžçªé·ãå Žåã¯ãæ®ããèªåã§ã·ã§ãŒãã£ã³ã°ã§ããŸãã
ãªããžã§ã¯ãã®ã«ã¹ã¿ã ããããã£ãå®çŸ©ããŸããç§ã®æèŠã§ã¯ã2次å
圢åŒã§æç»ããæ¹ã䟿å©ã§ãæç»æã«å£ã®é«ããèšå®ããã®ã¯äžäŸ¿ã§ããå£ã®é«ããæç»æé ã®äžéšãšããŠèšå®ã§ããŸãããããç°¡åãªæ¹æ³ã§ããããã£ã远å ããŸãããã䜿çšããŠãæç»åŸã«é«ãã倿ŽããŸãã
屿§[DisplayNameïŒ "é«ã"ïŒ]-ããããã£ãŠã£ã³ããŠã«è¡šç€ºãããåå[説æïŒ "å£ã®é«ã"ïŒ]ã«ãããšãããã¯èª¬æã§ãããè¡šç€ºå ŽæãããããŸããã§ãã[ã«ããŽãªïŒ "å£ãªãã·ã§ã³"ïŒ] -ãã¢ã®äŸã§åŸè¿°ããããã«ããã£ãŒã«ãã®ã«ããŽãªã¯ã䟿å®äžãã£ãŒã«ããã°ã«ãŒãåã§ããŸãã
ããŠãéåžžã¯ããããã£ãç¶ããŸããUnity3Dã§ãããªãã¯ããããã£ãäœæããããšãããå Žåãã¡ã«ããºã ã¯åæ§ã§ãããšãã£ã¿ãŒããïŒãã®å Žåã¯CADããïŒã¯ã©ã¹ã®ãã£ãŒã«ãã«çŽæ¥ã¢ã¯ã»ã¹ã§ããŸãã
TryModifyïŒïŒã¯å¿
é ã®ã¡ãœããã§ããããªããžã§ã¯ãã®ããããã£ã倿Žããåã«åŒã³åºãå¿
èŠãããããšãçè§£ããŠããŸãã ããšæ°å圌ã«äŒããŸãã
次ã«ããªããžã§ã¯ããå³é¢ã«é
眮ããã¡ãœãããåå®çŸ©ããŸãïŒä»¥åã¯ã³ãã³ãã§åŒã³åºããŠããããšãæãåºããŠãã ããïŒã
public override hresult PlaceObject(PlaceFlags lInsertType) { InputJig jig = new InputJig();
ãã®ã³ãŒãã¯ãæåã®ç« ã§èª¬æããNanosoftã®äŸããã»ãŒå®å
šã«åçšãããŠããŸããã100ïŒ
çè§£ã§ããŸããããå£ã®æåã®ãã€ã³ãïŒjig.GetPointïŒãå
¥åããã³ãã³ããç°¡åã«åŒã³åºããŠãããå³é¢ïŒDbEntityã AddToCurrentDocumentïŒïŒïŒããã®åŸã2çªç®ã®ãã€ã³ãïŒ_pnt2ïŒã®å
¥åã劚ããªãããã«ããã€ã³ãã£ã³ã°ãããªããžã§ã¯ããé€å€ããŸãã
ãã¹ãŠãæ£åžžãªå Žåããªããžã§ã¯ãã¯å³é¢ã«é
眮ãããããã§ãªãå ŽåïŒããšãã°ãå
¥åãå®äºããŠããªãå ŽåïŒããªããžã§ã¯ãã¯åé€ãããŸãã
ãããŠæåŸã®1ã€ã¯ãå£ã®ãµã€ãºã倿Žããããã®ãã³ãã«ãäœæããŸãã
ç§ãçè§£ããŠããããã«ãäžèšã®äŸã®ã³ãŒãã¯ããã³ãã«éšåïŒNC 8.Xã®å ŽåïŒã§å€ããªã£ãŠãããã
ããã®äŸã®ã³ãŒãã«æ³šç®ããæ¹ãè¯ãã§ãããã
ãã¡ãããç§ã®ã³ãŒãã¯çæ³ãšã¯ã»ã©é ãããšãèŠåããŸãã®ã§ãé©åã§é©åãªç·šéã«æºè¶³ããŸãã
ãã¢ãèããŠã¿ãŸãããã å§ãŸãã¯äŒŒãŠããŸãã
using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using Multicad.Runtime; using Multicad.DatabaseServices; using Multicad.Geometry; using Multicad.CustomObjectBase; using Multicad; namespace nanodoor2 {
ãã¢ãéããŠãããéããŠããããæ
åœãããã£ãŒã«ãã远å ãããŠããªãéãã2ã€ã®ãã¯ãã«_vecStraightDirectionã衚瀺ãããŸã-çŸåšã®ãã¢ã®å転ãæ
åœãã_vecDirectionClosed-ãã¢ã®å転ã«é¢ããããŒã¿ãéããç¶æ
ã§ä¿åããŸã ããã¯åŸã§ãã¹ãŠäŸ¿å©ã«ãªããŸãã
ããããäºæ³ãããããã«ããã¢ã®ãžãªã¡ããªã«ã¯çŽæ¥ãå°ããªå€æŽããããŸãã
public override void OnDraw(GeometryBuilder dc) { dc.Clear();
æåã«ããã¢ã1ã€ã®ãã€ã³ãã§æ§ç¯ããããšã«æ³šæããŠãã ãããã€ãŸãããã¢ã®å¹
ãšé«ãã®ãµã€ãºã¯å³å¯ã«åºå®ãããŠããŸãïŒå£ãšã¯ç°ãªãããã«ïŒã ãŸããã//ãã¢ãã³ãã«ã®æç»ãã»ã¯ã·ã§ã³ã远å ããŸãããæ¡ä»¶ä»ããã³ãã«ã瀺ã2è¡ããããŸãããŸãããããã³ã°ã®ã¿ã€ããJIS_WOODã«çœ®ãæããŸããã
ãã ãã2çªç®ã®ãã³ãã«ã¯å¿
èŠãªããããPlaceObjectã¡ãœããã¯åçŽåãããŠããŸãã
public override hresult PlaceObject(PlaceFlags lInsertType) { InputJig jig = new InputJig();
次ã«ãå£ã®ã¯ã©ã¹ã«é¢ããå®å
šãªæ°èŠæ§ããããŸãã èšäºã®åé ã§ã¢ã¬ã¯ãµã³ããŒã«æè¬ããã
以äžã§ã¯ãã¡ãœãããåå®çŸ©ããŸãããã®ã¡ãœããã¯ããã¢ã®å€æãããªãã¯ã¹ïŒç§»åããã³å転ïŒã®äœæã«äœããã®åœ¢ã§äžå¯è§£ãªè²¬ä»»ãè² ããŸãã
ãã®æ¹æ³ã®æäœã¯å®å
šã«ã¯çè§£ããŠããŸããããååãã§ãã¢ãåºç¹ãšå転ãã¯ãã«ã«å¿ããŠå€åœ¢ãããããæçµçã«å³é¢ã§ãã¢ãééããããšãã§ããŸãã
次ã«ããªããžã§ã¯ãã®å€æäžã«çºçãããšæãããã€ãã³ããåå®çŸ©ããŸãã
public override void OnTransform(Matrix3d tfm) {
ãŸããéçºã«ãšããããªãããã«ãããã€ãã®ãã€ã³ããç¹ã«ç§ã«ãšã£ãŠé£ãããœãªã¥ãŒã·ã§ã³ãç°¡ç¥åããŸããã ãããã®åçŽåã®1ã€ã¯ããã¢ã®æäœã«é¢ããå¶éã§ãã
ãã¢ã¯ãéãããšãã«ã®ã¿ç§»åãå転ãã³ããŒãããã³å€æŽã§ããŸãïŒããã©ã«ãã§èšå®ãããŠããŸãïŒã
ãããæ©èœãããããã«ãåãæ¶ããªããžã§ã¯ããäœæãã倿Žãã³ãããããããã®éå§ç¹ãããŒã¯ããŸãã
次ã«ããã¹ãŠãæ£åžžã§ããã°ã倿åŸã®ç¶æ
ããã€ã³ã_pnt1ãšãã¯ãã«._vecStraightDirectionã«æž¡ããŸãã
ãã®åŸãç¶æ
ã®ãã§ãã¯ãããããã¢ãéããããŠããå Žåã倿Žãé©çšãããããã«éãããã¢ã®äœçœ®ã«é¢ããããŒã¿ãæ ŒçŽãããã¯ãã«ã«å
¥åãããŸãã
ãã¢ãéãããïŒãŸãã¯åéãïŒå Žåããšã©ãŒã¡ãã»ãŒãžã衚瀺ããããã¹ãŠã®å€æŽããã£ã³ã»ã«ãããŸãã
ãã¢ã®é«ããã£ãŒã«ãã¯å£ã«äŒŒãŠããŸãã
ããããæ¬¡ã®ãã£ãŒã«ãã¯æ°ããã§ã
[DisplayName("Door status")] [Description("Door may be: closed, middle, open")] [Category("Door options")] public status Stat { get { return _dStatus; } set {
ãã¢ã®ç¶æ
ãæ
åœããŠããã®ã¯ãããããã£ãŠã£ã³ããŠã«ããããããŠã³ãªã¹ãã衚瀺ãããããšã§ããå€ã¯ãclosedãmiddleãopenïŒ1察1ãã¯ã©ã¹ã®å
é ã®åæã®å®çŸ©ãšããŠïŒã§ãã
åå€ãéžæãããšããã¢ã®å転ã«é¢äžãããã¯ãã«ãæçµçã«å€åããŸãã
éãããããšã以åã«ä¿åãããç¶æ
_vecDirectionClosedã«èšå®ãããŸãã
åéç¶æ
ã§ã¯ãçµæã®ãã¯ãã«ãååŸãããŸããããã«ããããã¢ãçŽ30床å転ããGOSTã«ããæå®ã®ããã«ãªããŸãã
éããŠãããšãã¯ãè² ã®å€ã䜿çšããŠéããç¶æ
ãã¯ãã«ã«å¯ŸããåçŽç·ãååŸããŸãïŒãã®çµæãããã©ã«ãã§ãã¢ãéããŸãïŒã
ããã©ã«ãã®ã±ãŒã¹ã¯ãŸã£ããå¿
èŠãªããšæããŸãããç§ã¯å»ããŸããã
ããŠãæåŸã¯æäœçšã®ãã³ãã«ã§ãã
ãã¹ãŠãã©ãã°ã§ããŸãã æã
ãã§ããéãäž¡æ¹ã®ãªããžã§ã¯ãã«ãã³ãæã£ãŠããŸãããããããããã°ããåã¯ãã¯ããããŸããïŒèšäºãæ©ãçµãããããšæã£ãŠããŸãããããã§ã«3æ¥éå®å
šã«æ®ºããŠããŸããïŒã
ãããã£ãŠãF5ããŒãæŒããDRAWWALLããã³DRAWDOORã³ãã³ãã䜿çšããŠãã¢ãšå£ãæ¿å
¥ããŸãã
ãã®çµæãå³ã«ãããã®ãåŸãããŸãã ãã®äžã§ãç§ã¯ããªãã«4ã€ã®ç°ãªãè§åºŠãã峿žé€šã®ä»äºã瀺ããŸãã æ®å¿µãªããçŸã¯å¹³ãã§ãç§ã¯ããããæã§æããã ããŠãå£ã®ãããã¢ã¯ãGitHubã®.dwgãã¡ã€ã«ã®ææ°ããŒãžã§ã³ã®ãã¢ãšã¯å°ãç°ãªãã2ã3ã®å€æŽãå ããã ãã§ãã¹ã¯ãªãŒã³ã·ã§ãããæ®ãçŽãã®ãé¢åã§ããã
NETLOADã³ãã³ãã䜿çšããŠã©ã€ãã©ãªãæåã§ããŒãããå Žåã¯ããªããžã§ã¯ãã§ãã¡ã€ã«ãéãåã«ã©ã€ãã©ãªãããŒãããå¿
èŠãããããšãå¿ããªãã§ãã ãããããããªããšããããã·ãªããžã§ã¯ããšããŠèªèãããŸããNanocadãåããŠäœ¿çšããå Žåã¯ã次ã®ããã«ãªããžã§ã¯ãã®3次å
ãã¥ãŒãååŸããã®ã䟿å©ã§ããããšãæãåºããŠãã ãããview-> orbit-> dependent orbitã«æ»ãã2次å
ãã¥ãŒãæ»ãã«ã¯ãview-> views andprojects-> viewèšç»->çŸåšã®UCS

3.ã³ãŒããç¡æã®NanoCAD 5.1ã«é©å¿ãããããšããŠããŸãã

ååã®èšäºã§ã¯ããªãããã®çç±ã§ããã§ã€ã¹ãã€ã³ãã£ã³ã°ããŒã ã¯ç§ã®ããã«åããŠããŸããã§ããããä»åã¯ã³ãŒããé©åãããããããªå¶éã§ãªããžã§ã¯ããNanoCAD 5.1ã®ç¡æããŒãžã§ã³ã§èµ·åããŸããã
ãŸããç°å¢ã®èšå®æ¹æ³ã«ã€ããŠç°¡åã«èª¬æããŸãããã»ãšãã©éãã¯ãããŸããã
ãããã£ãŠãããã§ããNanocad 5.1ã§ã®ãã«ãæé ã«ã€ããŠç°¡åã«èª¬æããŸãã
- æ°ãããããžã§ã¯ããäœæãã.NET Framework 3.5ãéžæãããã³ãã¬ãŒããšããŠCïŒã¯ã©ã¹ã©ã€ãã©ãªãéžæããŸãã
- Nanocadã®x32ããŒãžã§ã³ïŒããã³5.1ã®ã¿ïŒã®å ŽåãSDK \ include \ãã©ã«ããŒããmapimgdãžã®ãªã³ã¯ããããžã§ã¯ãã«è¿œå ããŸãã ããŒã«ã«ã«èšå®ãããããããã£ãå¿
ãFalseã«ã³ããŒããŠãã ããã
- ãŸããMicrosoftã®ã¢ã»ã³ããªãªã³ã¯System.Windows.Forms.dllãSystem.Drawing.dllã远å ããŸãã
- ãããžã§ã¯ãããããã£ã®[ãããã°]ã¿ãã§ãèµ·åæã®ã¢ã¯ã·ã§ã³ãšããŠ[å€éšããã°ã©ã ã§éã]ãéžæããNC 5.1å®è¡å¯èœãã¡ã€ã«ãžã®ãã¹ãæå®ããŸãïŒCïŒ\ Program FilesïŒx86ïŒ\ Nanosoft \ nanoCAD 5.1 \ nCadããããŸãïŒã exeïŒ
- ãã¢ã»ã³ããªãã»ã¯ã·ã§ã³ã®ããŒãã®åã§ãããæçµãã©ãããã©ãŒã ã§ããx86ãã€ã³ã¹ããŒã«ããŸããã
- ãã¢ãšå£ã«ããããDoorPseudo3D_nc51.csãšWalllPseudo3D_nc51.csã®2ã€ã®ã¯ã©ã¹ãäœæããŠã¿ãŸãããã
- CïŒ\ ProgramData \ Nanosoft \ nanoCAD 5.1 \ DataRWïŒããã¯ããªããšã¯ç°ãªãå ŽåããããŸãïŒãéããæ¬¡ã®å
容ã®load.configãã¡ã€ã«ãèŠã€ãããäœæããŸã
<root> <list> <module path="C:\Users\...\bin\Debug\ nanodoor2_51.dll"/> </list> </root>
ãã¡ã€ã«ãžã®ç¬èªã®ãã¹ããããŸãã
ã³ãŒãã«æ ¹æ¬çãªéãã¯ãªããããäž¡æ¹ã®ã¯ã©ã¹ããã¿ãã¬ã®äžã«é ããéãã®ã¿ã説æããŸãã
ã ããå£ïŒ
éãã¯äœã§ããïŒãŸãã空ã®å³é¢ã«ãªããžã§ã¯ããæ¿å
¥ããããšãããšãã«ãNanocadããããã¹ã±ãŒãªã³ã°ããŠå£ããã¢ãèŠããªãããã«ããã¹ã±ãŒã«ä»ãã®ãã£ãŒã«ãã远å ããŸãããå£ã®å Žåãå£ã®åãã倿Žãããã¢ã®å Žåãåããšé·ãã倿ŽããŸãããããã£ãŠãç®çã®åº§æšã«ã¯ãéããŠããããããã£ãããã¹ã±ãŒã«ãä¹ç®ãããŸããMultiCAD.NET APIã®å€ãããŒãžã§ã³ã®2çªç®ã®éãã¯ããããã³ã°ãæäœããããã®ã¯ã©ã¹ããªãããšã§ããéåžžã®.NETã®APIãä»ããŠå®è£
ã§ãããšæ³å®ã§ããŸãããããã§ã¯ãããŸãããä»ãã¢ïŒãã¢ã®å®å
šãªã³ãŒã ç¹°ãè¿ããŸãããã»ãšãã©ãã¹ãŠãåãã§ããå¯äžã®ããšã§ããããŒãžã§ã³5.1ã§ã¯ããã£ãŒã«ãã¯åæãç°ãªãæ¹æ³ã§åŠçããclosed / openã®ä»£ããã«ãªããžã§ã¯ãã®ããããã£ãŠã£ã³ããŠã«åæå€ã衚瀺ãããŸãïŒ0ã1ã2ã¯ããŸãæç¢ºã§ã¯ãªããããèŠåãå°ã倿ŽããŸãããšã©ãŒããŸãããã¢ã«ã¯ãããã³ã°ããªããã¹ã±ãŒã«ã«è¿œå ã®ããããã£ããããŸãïŒå¿
èŠã«å¿ããŠãNC 8.5ã®ã¯ã©ã¹ã«ãå®è£
ã§ããŸãïŒã次ã®ããã«ãªããŸãã
4. MultiKukishïŒçµè«ïŒ

, , . MultiCAD.NET API AutoCAD ZWCAD ,
.
, .
, , AutoCAD 2017, â «MultiCAD_AC_ZC_Enabler_2209_RU.zip» ( 1.5 ), AutoCAD 2016. .
ä»åãå¥ã®ãªãã·ã§ã³ã詊ããŠã¿ãããšã«ããZWCAD + 2015ã®è©ŠçšçãããŠã³ããŒãããŸãããããããã®ã¬ã€ã€ãŒããµããŒãããææ°ããŒãžã§ã³ã§ããç§ã¯ç¥ããŸãããå€åç§ã¯ãæ¡æããããããŸãããããã®ã©ã€ãã©ãªãåã®èšäºã®ã©ã€ãã©ãªãZWCADã§æ¥äžæããŸããã§ããããããã£ãŠã誰ããèµ°ã£ãŠãã¹ã¯ãªãŒã³ã·ã§ãããå
±æããŠããããããããããã§ããæ®ãã«ã€ããŠã¯ããã®APIãå°ç¡ãã«ããã°ããã»ã©ãããæ·±ãé¢ããåãã奜ãã«ãªãå§ããŸããAPIãæ¹åãããŠããããšãAPIã¯ã©ã¹ã®äžéšã®ã¡ã³ããŒã¯æ¢ã«ãã·ã¢èªã§æ£æ°ãªèª¬æãæã£ãŠããããšããããŠAPIèªäœãããèªçµŠèªè¶³ã«ãªã£ãŠããããšãããããŸããDWG 2018ã®ãµããŒããåããNanoCAD 9ïŒãŸãã¯ãããåŒã°ãããã®ïŒããªãªãŒã¹ããããšãããã«è¯ããªããšæããŸãïŒç¹ã«ãéçºè
ããã©ãŒã©ã ã§çŽæããããã«ãæ°ããç¡æã®Nanocadãç¶ãå ŽåïŒãã ãããNanocadéçºè
ãã©ãŒã©ã ã®ãã¹ãŠã®åå è
ã«-å©ããŠãããŠãéçºè
ã«-NC 8.5ãæçš¿ããŠãããŠããããšãããããŠãã¹ãŠã®èªè
ã«-æåŸãŸã§èšäºããã¹ã¿ãŒããŠãããŠããããšããPSæåã¯ãã¿ã€ãã«ã®èšäºã¯å¥ã®åçã«ãªã£ãŠããã¯ãã§ãããããæ°·ã§ã¯ãªãããšå€æããæçµçã«æ¿æ²»çã«æ£ããã«ãŒããããšã°ããŒããŒã«çœ®ãæããŸããïŒãšããã§ãåçã®äžéšã¯ç§ãèŠã€ãããããªã«ã€ãªãããŸãïŒãããããç§ã¯èšäºã®äžã§å
ã®ç»åãé ãããšã«ããŸãã...