AutoCADã®ãã©ã°ã€ã³ã®éçºã«ç¹åãã
ã·ãªãŒãºã®ç¬¬5éšã§ã¯ãåçŽãªãããã¯ãäœæããŠå³é¢ã«é
眮ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
public static string disclaimer = " AutoCAD. â ."
ã¯ããã«
å³é¢ã§äœæ¥ãããšãã«åãã¿ã€ãã®ãªããžã§ã¯ããäœæããå¿
èŠãçããå Žåãåäžã®ãªããžã§ã¯ããšããŠåäœãããªããžã§ã¯ãã®ååä»ãã°ã«ãŒããšãã
ãããã¯ã¡ã«ããºã ã䜿çšããŠãããè¡ãã®ãæåã§ãã ãããã¯ã«é¢ããäžè¬çãªæ
å ±ã¯ã
ããã§ååŸã§ã
ãŸã ã
ãããã¯ã®
å®çŸ©ãšãããã¯ã®
çºç ãšãã 2ã€ã®æŠå¿µãæç¢ºã«åºå¥ã§ããããšãéèŠã§ãã éãã®è©³çްãªèª¬æã¯ã
ãã ïŒè±èªïŒãš
ãã ïŒrusïŒã«ãããŸãã æ¬è³ªãç°¡åã«èª¬æããŸããæ°ãããããã¯ãäœæãããšãAutoCADã¯ãã®èª¬æãç¹å¥ãªãããã¯ããŒãã«ã«é
眮ããŸãã ãã®èšè¿°ã¯
ãããã¯å®çŸ©ãšåŒã°ã
ãŸã ã ãããã¯å®çŸ©ã¯ãããã¯ããŒãã«ã«ã®ã¿ååšããå³é¢ã«ã¯è¡šç€ºãããŸããã AutoCADã¯ã
ãããã¯åç
§ãå³é¢ãã£ãŒã«ãã«çŽæ¥é
眮ããŸã-ãããã¯å®çŸ©ãžã®ãªã³ã¯ã ãããã¯ã®å®çŸ©ã倿Žãããšããããã¯ã®ãã¹ãŠã®åºçŸããããã®å€æŽãç¹°ãè¿ããŸãã èšäºã®åŸåã§ã¯ãæåã®åèªïŒãå®çŸ©ããŸãã¯ããšã³ããªãïŒãçç¥ããŠãåã«ããããã¯ããšæžãããšããããŸãã
泚æïŒç§ã¯å人çã«ãããããã¯ãšã³ããªããããããããã¯ã€ã³ã¹ã¿ã³ã¹ããšãã翻蚳ã奜ãã ãšèšããªããã°ãªããŸããã ããããããã¯ããã¥ã¡ã³ãã«æžãããŠããã®ã§...
圌ããèšãããã«ãããªãã®ç¶èŠªãæ¬ããããªãã®æ¯èŠªãæ¬ããåæ±èª¬ææžãèªãã§ãã ããã
Autocadãšéä¿¡ããéçšã§ã
regularãš
dynamicã® 2çš®é¡ã®ãããã¯ã«åºäŒããŸããã åŸè
ã®äž»ãªæ©èœã¯ãèŠçŽ ã«ç¹å®ã®ãã«ã¹ã¿ãã€ãºå¯èœãªããã©ã¡ãŒã¿ïŒããšãã°ããããã¯å
ã®ç·ã®é·ãããã®åŸæè§ïŒãèšå®ã§ããããšã§ãã åçãããã¯ã®äž»ãªæ¬ ç¹ã¯ã.NET APIã䜿çšããŠäœæ
ã§ããªãããšã§ãã
ãã€ãããã¯ãããã¯ã«ã€ããŠã¯ããã1床説æããŸãã ãããŸã§ã®éãåŸæ¥ã®ãããã¯ãã©ã®ããã«äœ¿çšã§ããããèŠãŠã¿ãŸãããã
AutoCADã䜿çšããŠãããã¯ãæåã§äœæãã
ãŸããAutoCADã§çŽæ¥ãããã¯ãäœæããŸãããã ããã§ã¯ããã°ã©ãã³ã°ã¯è¡ãããŸãããããã©ã°ã€ã³ã®çµæãå°ãªããšããããè©äŸ¡ã§ããããã«ããããã«ãæåã§ãããã¯ãäœæããæ©èœã圹ç«ã¡ãŸãã ããã»ã¹ã®è©³çް-ãã¿ãã¬ã®äžã
èªè
ãæ¢ã«AutoCADã§ãããã¯ãç·šéããããšã«æ
£ããŠããå Žåããã®ã»ã¯ã·ã§ã³ããæ°ããããšãåŠã¶ããšã¯ãããŸããããããã£ãŠããŸãããããã¯ã«çµåããèŠçŽ ãå³é¢ã«è¿œå ããå¿
èŠããããŸãã ãŸãããããã¯ã«åçŽãªåã远å ããŸãã
AutoCADã³ãã³ãã©ã€ã³ã§
CIRCLEã³ãã³ããå®è¡ããäžå¿ãšååŸãæå®ããŸãã å³é¢ã«åã衚瀺ãããŸãã

åãéžæããŠã
BLOCKã³ãã³ããå®è¡ããŸãã ç»é¢ã«ãããã¯äœæã¡ãã¥ãŒã衚瀺ãããŸãã ããããã¯ãããã«ã®ãäœæããã¿ã³ãæŒããšãåæ§ã®çµæãåŸãããŸãã

ãããã¯ã«ååãä»ãããŠãããããUnitlessãã«èšå®ãããBlock Editorã§éããããã¯ã¹ããªãã«ããŠããOKããã¯ãªãã¯ããŸãã

泚æïŒæž¬å®åäœãéžæãããšãåäœã®ãµã€ãºãæå®ã§ããŸãããã®ãµã€ãºã¯ãããŸããŸãªæž¬å®ã·ã¹ãã ïŒãšãŒãããã§ã¯ã¡ãŒãã«ãšããªã¡ãŒãã«ãã¢ã¡ãªã«ã§ã¯ãã£ãŒããšã€ã³ãïŒã«èªåçã«å€æãããŸãã å€ããåäœãªããã«èšå®ãããšãåäœã¯å³é¢ã«ã€ã³ã¹ããŒã«ãããŠããæž¬å®åäœã䜿çšããŸãã å€ã¯åžžã«ãUnitlessãã«èšå®ããŸãã è¯ããæªããã¯ããããŸããã
ãã®åŸãAutoCADã¯ãåºæ¬åäœãšãªãå³é¢äžã®ãã€ã³ããæå®ããããã«æ±ããŸãã éåžžããããã¯ã®äžå¿ãŸãã¯ãã®å·Šäžé
ããã®ç¹ãšããŠæå®ãããŸãã åã®äžå¿ãåºç¹ãšããŠç€ºããŸãã
ãããã¯ã®äœæãå®äºããŸããã ãããã¯ã®æåã®åºçŸã¯èªåçã«å³é¢ã«è¿œå ããããã®ãããã¯ãäœæãããèŠçŽ ã眮ãæããŸãã äœæãããããã¯ã®è€æ°ã®ãªã«ã¬ã³ã¹ãå³é¢ã«è¿œå ããã«ã¯ã[ãããã¯]ããã«ã§
INSERTã³ãã³ããŸãã¯åãååã®ãã¿ã³ã䜿çšã§ããŸãã

ã³ãã³ããå®è¡ããããã¿ã³ãæŒããšããããã¯ãæ¿å
¥ããããã®ãŠã£ã³ããŠãç»é¢ã«è¡šç€ºãããŸãã

ãªã¹ãã§ç®çã®ãããã¯ãéžæãã[OK]ãã¯ãªãã¯ããŠãæ¿å
¥ãã€ã³ããæå®ããŸã-ãããã¯ãå³é¢ã«è¡šç€ºãããŸãã ãªããžã§ã¯ããéžæããããããã£ãŠã£ã³ããŠãèŠããšãããããããã¯ã§ããããšã確èªã§ããŸãã

ãããã¯ãç·šéããã«ã¯ã
BEDITã³ãã³ããŸãã¯ããããã¯ãããã«ã®å¯Ÿå¿ãããã¿ã³ã«ãã£ãŠåŒã³åºããããšãã£ã¿ãŒã䜿çšããŸãã

ã³ãã³ããå®è¡ããããåè¿°ã®ãã¿ã³ãã¯ãªãã¯ãããšããããã¯å®çŸ©ãéžæããããã®ãŠã£ã³ããŠãç»é¢ã«è¡šç€ºãããŸãã

ãã®ãŠã£ã³ããŠã§ãç·šéããå®çŸ©ãéžæãããOKããã¯ãªãã¯ããå¿
èŠããããŸãã ãã®åŸãAutoCADã¯ãããã¯ãšãã£ã¿ãŒãéããŸãã ç§ã®æèŠã§ã¯ããšãã£ã¿ãŒããã«ã®æãéèŠãªãã¿ã³ã«ã€ããŠèŠãŠãããŸãããã

- ãããã¯ã®ä¿å -ãã¹ãŠã®å€æŽãä¿åããŸãã ãããã¯ãšãã£ã¿ãéããåŸãå³é¢ã«ãããã¹ãŠã®ãããã¯ãªã«ã¬ã³ã¹ã¯ããããã¯å®çŸ©ã®å€æŽã«åŸã£ãп޿°ãããŸãã
- ãªãŒãµãªã³ã°ãã¬ãã -屿§ãŠã£ã³ããŠã衚瀺ãŸãã¯é衚瀺ã«ããŸãã ãã®ãŠã£ã³ããŠã¯ãåçãããã¯ãæäœãããšãã«åœ¹ç«ã¡ãŸãã
- ãã€ã³ã -ãã®ããããããŠã³ãµãã¡ãã¥ãŒã®é
ç®ã¯ãããŒã¹ãã€ã³ããã§ãããã䜿çšããŠãããã¯ã«æ°ããããŒã¹ãã€ã³ããèšå®ã§ããŸãã
- ãããã¯ãšãã£ã¿ãŒãéãã - ãããã¯ãšãã£ã¿ãŒãéããŸã ã ä¿åãããŠããªã倿Žã¯ãã¹ãŠå€±ãããŸãã
ãšãã£ã¿ãŒå
ã§ããããã¯å®çŸ©ã«æ°ãããªããžã§ã¯ãã远å ããäžèŠãªãªããžã§ã¯ããåé€ã§ããŸãã ãããã¯ã®ç·šéã¯ãéåžžã®å³é¢ã®ç·šéã«äŒŒãŠããŸãã
ããã§ãAutoCADã§ã®ãããã¯ã®äœæã«é¢ããçã説æã¯çµããã§ãã ã³ãŒãã«ã¢ã¯ã»ã¹ã§ããŸãã :-)
AutoCAD .NET APIã䜿çšããŠãããã¯ãäœæãã
åçŽãªãããã¯ãäœæããäŸ
ãã®ã»ã¯ã·ã§ã³ã¯ã察å¿ããKean Walmsleyã®ããã°æçš¿ã«åºã¥ããŠããŸãïŒå
ã®ãœãŒã¹ãšæ¯èŒããäŸã®æ¹ãã¯ããã«ç°¡åã§ãïŒã ããªã©ã€ã³ãåãããã¹ãã®ãããã¯ã§æ§æãããåçŽãªãããã¯ãäœæããŸãã
ãœãŒã»ãŒãžã¹ã¯ã©ããã«ã€ããŠå°ããšããã§ããœãŒã»ãŒãžã®ã¹ã¯ã©ããã«ã€ããŠè©±ãå§ããŠãã......
é廿°å¹Žã«ããã£ãŠïŒç¥ãæéã®çµéïŒïŒå€ãã®è¯ãããšãèµ·ãããŸããã ç¹ã«ã
äžçã®
ãã¹ãã¢ã³ãã°ã¬ã€ãã¹ãã«ã³ãããŒã¯ãç¡æã®
ãããã§ãã·ã§ãã«ããŒãžã§ã³ã®Visual Studioã
ãªãªãŒã¹ããŠããŸãã
ã¯ããVisual Studio Community Editionã¯Expressãããå€ãã®ã¹ããŒã¹ãå¿
èŠãšãããã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ããå°ãè€éã§ã-ããããé
ããæ©ããéçºè
ã¯éåžžIDEã¢ããªã³ã§äœæ¥ããå¿
èŠããããExpressããŒãžã§ã³ã§ã¯ãµããŒããããŸããã ãã®ãããªããšã
å®äŸïŒãããã®è¡ã®äœæè
ã¯VS Expressã§ãã©ã°ã€ã³ãå
æ°ã«æžããŸããããåé¡ã¯äœãç§»æ€ããŸããã§ãã...ã€ã³ã¹ããŒã©ãŒïŒWixãã¯ãããžãŒã䜿çšããŠäœæãããmsiãã¡ã€ã«ïŒã远å ãããŸã§ã ãã®çµæããã¹ãŠã®ã€ã³ã¹ããŒã©ãŒã³ãŒããã¡ã¢åž³++ã§èšè¿°ããããã¥ã¡ã³ããæ¯åãã§ãã¯ããæåã§ã³ã³ãã€ã«ããå¿
èŠããããŸããã
ãŸããVisual Studio Professionalã§ã¯ããã©ã°ã€ã³ããã©ã°ã€ã³ããã ãã§WixãæäœããIDEã§ãã¹ãŠãå®è¡ã§ããŸãããã³ããã³ãŒãè£å®ãããã³ãããžã§ã¯ãã§ã®ã³ã³ãã€ã«ãå¯èœã§ãã ã§ããŸãã ããã¯...
äžè¬çã«ãPCã250å°ä»¥äžã§å¹Žéåå
¥ã1,000,000ãã«æªæºã®äŒç€Ÿã§åããŠããå Žåãäœèšãªæå³ã®ãªãæ°æéã®ç掻ãããå Žåã¯ããã®è£œåãã€ã³ã¹ããŒã«ããŠããäœæ¥ããããšã匷ããå§ãããŸãã
人çã«æå³ã®ãªãæéããªããã°ããã¹ãŠãè
ããããã人çã¯çã¿ã§ãããã€ã³ã¹ããŒã«ãããVisual Studio Community Editionãªãã§ããªãã®ååšãåŒãåºãããšã¯ããã®äžçã®ãšã³ããããŒãå¢ããããšãæå³ããŸãã
ãããã¯ãäœæãããã®ãªã«ã¬ã³ã¹ãå³é¢ã«é
眮ããã«ã¯ã次ãå®è¡ããå¿
èŠããããŸãã
- ãããã¯ããŒãã«ã«æ°ããã¬ã³ãŒããäœæããŸãïŒãããã¯å®çŸ©ïŒã
- å¿
èŠãªå¹ŸäœåŠçãªããžã§ã¯ãããããã¯å®çŸ©ã«è¿œå ããŸãã
- å³é¢ã«ãããã¯ãšã³ããªã远å ããŸãã
ããã§ã¯å§ããŸãããã
å€éšãªã³ã¯ã®æ¥ç¶ã
CopyLocal
çŠæ¢ã.NETããŒãžã§ã³ã®æå®ãªã©ããã©ã°ã€ã³äœæã®ãã€ããŒãªæ©èœã«ã€ããŠã¯
CopyLocal
ããã¯ãã·ãªãŒãºã®ä»¥åã®æçš¿ã§ç¹°ãè¿ãè°è«ãããŠããŸãã ãã®äŸã§ã¯ã
AcMgdããã³
AcDBMgdã©ã€ãã©ãªãžã®åç
§ãå¿
èŠã§ãã ã³ãŒãã¯ã»ãšãã©ãããŸããã äžåºŠã«ãã¹ãŠæã£ãŠããŠã詳现ãåæããŸãã
ã³ãŒãïŒ using System; using System.IO; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using acad = Autodesk.AutoCAD.ApplicationServices.Application; namespace HabrPlug_SimpleBlock { public class ClassMyAutoCADDLL_SimpleBlock { public class Commands : IExtensionApplication { // AutoCAD "HabrCommand" [CommandMethod("HabrCommand")] public void HabrCommand() { // Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; // "Editor" AutoCAD Editor ed = doc.Editor; // const string blockName = "pvtBlock"; // Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { /
ãã©ã°ã€ã³ãããŒãããŠHabrCommandã³ãã³ããå®è¡ãããšã次ã®å³ã衚瀺ãããŸãã ããã§ã¯ãã³ãŒãã§äœãèµ·ããããçè§£ããŸãããã
æåã«ãæºåæäœãå®è¡ããŸããããã¥ã¡ã³ãããã®ããŒã¿ããŒã¹ãããã³
Editor
ããããã£ãžã®ãªã³ã¯ãååŸããæ°ãããããã¯ã®ååãèšå®ããŠããã©ã³ã¶ã¯ã·ã§ã³ãéå§ããŸãã ãããã
Editor
ããããã£ãé€ããããã«ã¯æ°ãããã®ã¯ãããŸããã
Editor
ã¯ã©ã¹ã®è©³çŽ°ãªæ
å ±ãå³åº§ã«èŠã€ããããšãã§ããŸããã§ããã ç¥èã®ãã人ããã®ã¯ã©ã¹ãšãã®ã¡ãœããã®æ£ãã説æïŒãŸãã¯ãå°ãªããšãObjectARXãªãã¡ã¬ã³ã¹ã®ã©ãã«ããã®ãïŒãžã®ãªã³ã¯ãä¿ããŠããããå¬ããã§ãã ãã®äŸã§ã¯ã
Editor
ã¯ã©ã¹ã¯ãåãååã®ãããã¯ãããŒã¿ããŒã¹ã«æ¢ã«ååšãããšããã¡ãã»ãŒãžã衚瀺ããããã«ã®ã¿äœ¿çšãããŸãã AutoCADã§ã¯ããã®ã¡ãã»ãŒãžã¯æ¬¡ã®ããã«ãªããŸãã

ãã©ã³ã¶ã¯ã·ã§ã³å
ã§ã¯ããã®ãµãã»ã¯ã·ã§ã³ã®åé ã§æŠèª¬ããã¢ã«ãŽãªãºã ã«åŸããŸãã
æåã®ã¹ãããã§ã¯ããããã¯ããŒãã«ã«æ°ããã¬ã³ãŒããäœæããŸãã
- ãããã¯ããŒãã«ãéããŸãïŒå€æŽãå ãããããæžã蟌ã¿ã¢ã¯ã»ã¹ãèŠæ±ããŸãïŒã
- ããŒãã«ã«ãã®ååã®ãããã¯ãååšãããã©ããã確èªããŸãïŒãããã¯ããŒãã«ã«æ¢ã«ååšããååã®ãããã¯ãäœæããããšãããšã
eDuplicateRecordName
äŸå€ãçºçããŸãããããã¯çµ¶å¯Ÿã«å¿
èŠãããŸããïŒã - æ°ãããããã¯å®çŸ©ãäœæããŸãã
- äœæããããããã¯å®çŸ©ã«ååãèšå®ããŸãã
- äœæãããããã¯å®çŸ©ããããã¯ããŒãã«ãšãã©ã³ã¶ã¯ã·ã§ã³ã«è¿œå ããŸãã
2çªç®ã®ã¹ãããã§ã¯ãäœæãããã¬ã³ãŒãã«å¿
èŠãªå¹Ÿäœããªããã£ãã远å ããŸãã ããªã©ã€ã³ãåãããã¹ãã®3ã€ããããŸãã
ããªã©ã€ã³ãšåãå³é¢ã«è¿œå ããæ¹æ³ã«ã€ããŠã¯ãåã®èšäºã§èª¬æããŸããã ããã¹ãã§ã¯ããã¹ãŠãåãããã«èµ·ãããŸãã éåžžãã°ã©ãã£ãã¯ãªããžã§ã¯ãããããã¯ã«è¿œå ããã«ã¯ã3ã€ã®æé ãå®è¡ããŸãã
- å¿
èŠãªãªããžã§ã¯ããäœæãããŸãã
- ãã®ãªããžã§ã¯ãã®ããããã£ãèšå®ãããŸãã
- äœæããããªããžã§ã¯ãã¯ããããã¯å®çŸ©ãšãã©ã³ã¶ã¯ã·ã§ã³ã«è¿œå ãããŸãã
ããã¯ãããªã©ã€ã³ãšåã®äž¡æ¹ãããã³ããã¹ãã«é©çšãããŸãã ã³ãŒãã®ã©ã®éšåãã©ã®ã¢ã€ãã ã«è²¬ä»»ãããã®ãââã¯æããã§ãã å³é¢ãžã®ããã¹ãã®è¿œå ã«ã€ããŠè©³ããã¯ã
ãã¡ã ïŒè±èªïŒãš
ãã¡ã ïŒrusïŒã
ã芧ãã ãã ã
3çªç®ã®ã¹ãããã§ã¯ãäœæãããããã¯ã®ãªã«ã¬ã³ã¹ãå³é¢ã«è¿œå ããŸãã ããã§ã®æé ã¯æ¬¡ã®ãšããã§ãã
- ã¢ãã«ç©ºéã¯èšé²çšã«éãããŠããŸãã
- æ°ãããããã¯ãšã³ããªãäœæãããŸãã
- äœæããããããã¯ãšã³ããªãã¢ãã«ç©ºéãšãã©ã³ã¶ã¯ã·ã§ã³ã«è¿œå ãããŸãã
æ°ãããããã¯ãšã³ããªãäœæãããšãã«äœ¿çšããã
BlockReference
ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã«ã€ããŠè©³ãã説æããŸãã ãã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ããããã¯é
眮ãã€ã³ãïŒãããã¯ã®ããŒã¹ãšã³ããªãã€ã³ãããã®ãã€ã³ããšçµåãããïŒãšãããã¯å®çŸ©IDã®2ã€ã®ãã©ã¡ãŒã¿ãŒãåããŸãã ã€ãŸããAutoCADã«è¡šç€º
ãããããã¯ãš
å Žæãæç€ºããå¿
èŠããããŸãã ãã®äŸã§ã¯ããããã¯ã®åç¹ïŒ
Point3d.Origin
ïŒããããã¯é
眮ãã€ã³ããšããŠç€ºãããŠããããã®å®çŸ©ãäœæããæåã®ã¹ãããã§ãããã¯å®çŸ©IDãä¿åããŸããã
ããã¥ã¡ã³ããããã¯ããŒãã«ã«æ¢ã«ãããããã¯ã䜿çšãã
åã®äŸã§
HabrCommandã³ãã³ããå®è¡ããŠããã衚瀺ããããããã¯ãå³é¢ããåé€ããŠ
HabrCommandã³ãã³ããå床å®è¡ãããšããpvtBlockãšããååã®ãããã¯ãæ¢ã«ååšããŸãããšããã¡ãã»ãŒãžã衚瀺ãããå³é¢ã«ã¯äœã衚瀺ãããŸããã 以åã«äœæãããããã¯å®çŸ©ã䜿çšããã«
ObjectID
ãã®å®çŸ©ã®
ObjectID
ãç¥ãå¿
èŠã
ObjectID
ãŸãã ãã®å Žåãã³ãŒãã¯æ¬¡ã®ããã«æžãæããããšãã§ããŸãã
ããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand")] public void HabrCommand() { // Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; // "Editor" AutoCAD Editor ed = doc.Editor; // const string blockName = "pvtBlock"; // Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { //*** // 1 - ( ID ) //*** // BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead); // , // - ID ObjectId btrId; if (bt.Has(blockName)) { btrId = bt[blockName]; } else { // bt.UpgradeOpen(); // , BlockTableRecord btr = new BlockTableRecord(); btr.Name = blockName; // , ID btrId = bt.Add(btr); // tr.AddNewlyCreatedDBObject(btr, true); //*** // 2 - //*** // Polyline poly = new Polyline(); poly.SetDatabaseDefaults(); poly.AddVertexAt(0, new Point2d(-50, -125), 0, 0, 0); poly.AddVertexAt(1, new Point2d(-50, 105), 0, 0, 0); poly.AddVertexAt(2, new Point2d(-20, 125), 0, 0, 0); poly.AddVertexAt(3, new Point2d(20, 125), 0, 0, 0); poly.AddVertexAt(4, new Point2d(50, 105), 0, 0, 0); poly.AddVertexAt(5, new Point2d(50, -125), 0, 0, 0); poly.AddVertexAt(6, new Point2d(-50, -125), 0, 0, 0); // btr.AppendEntity(poly); tr.AddNewlyCreatedDBObject(poly, true); // Circle cir = new Circle(); cir.SetDatabaseDefaults(); cir.Center = new Point3d(0, 90, 0); cir.Radius = 15; // btr.AppendEntity(cir); tr.AddNewlyCreatedDBObject(cir, true); // DBText text = new DBText(); text.Position = new Point3d(-33, -95, 0); text.Height = 35; text.TextString = "BC"; // btr.AppendEntity(text); tr.AddNewlyCreatedDBObject(text, true); } //*** // 3 - //*** // BlockTableRecord ms = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); // , ID BlockReference br = new BlockReference(Point3d.Origin, btrId); // ms.AppendEntity(br); tr.AddNewlyCreatedDBObject(br, true); // tr.Commit(); } }
ããã§HabrCommandã³ãã³ããå®è¡ãã衚瀺ãããŠãããããã¯ãåé€ããŠ
HabrCommandã³ãã³ããåå®è¡ãããšããããã¯ã®ãšã³ããªãå³é¢ã«å衚瀺ãããŸãã ãã®å Žåãæ°ãããããã¯å®çŸ©ã¯äœæãããŸãã-ãã©ã°ã€ã³ã¯ãã§ã«ãããã¯ããŒãã«ã«ããã¬ã³ãŒããååŸããŸãã
ãã®äŸã§ã¯ã倿Žã®ããã«
UpgradeOpen()
ã¡ãœããã䜿çšã
UpgradeOpen()
ãããã¯ãäŸãããã¥ã¡ã³ãã«é »ç¹ã«ç»å ŽããŸãã ä»çµã¿ãèŠãŠã¿ãŸãããã
æåã®äŸã§ãæžã蟌ã¿çšã«ãããã¯ã®ããŒãã«ãããã«éããå ŽåïŒ
OpenMode.ForWrite
ïŒãèªã¿åãå°çšã«ãããã¯ã®ããŒãã«ãéããŸãïŒ
OpenMode.ForRead
ïŒã ããã§ããŒãã«ã衚瀺ããååã®ãããã¯ãå«ãŸããŠãããã©ããã確èªã§ããŸãã ãã®ãããªãããã¯ãèŠã€ãã£ãå Žåããã®
ObjectID
ãèªã¿åãããšãã§ããŸããããã®å Žåãèªã¿åãå°çšã¢ã¯ã»ã¹ã®ã¿ãå¯èœã§ãã ç§ãã¡ã®ååã®ãããã¯ãããŒãã«ã«ãªãå Žåãããã远å ããå¿
èŠãããããã®ããã«ã¯æžã蟌ã¿ã¢ã¯ã»ã¹ãå¿
èŠã«ãªããŸãã ãã®ã¢ã¯ã»ã¹ãååŸããã«ã¯ã
UpgradeOpen()
ã¡ãœããã䜿çšããŸãããã®ã¡ãœãããåŒã³åºããåŸã
OpenMode.ForWrite
ã¢ã¯ã»ã¹
OpenMode.ForWrite
éããããã«ãããã¯ããŒãã«ãæäœã§ã
OpenMode.ForWrite
ã
泚æïŒUpgradeOpen()
ã䜿çšããããšããUpgradeOpen()
ãŸãã å°ãªããšãããŒã³ã»ãŠã©ã«ã ãºãªãŒã¯ãŸãã«ãããããŸãã ãããã UpgradeOpen()
ã䜿çšãã人ã«äžãããã人çã®å®ãšç¥çŠã«é¢ãã詳现ãªããŒã¿ã¯ãããŸããã ç§èªèº«ã¯ããã®ãã¶ã€ã³ãä»äºã«äœ¿çšãããããã«ã€ããŠããŸãæ²ãã¿ãæããŸããã§ããã 誰ããUpgradeOpen()
䜿çšã«é¢ããŠèªåã®ç«å Žã瀺ãããšãUpgradeOpen()
ã°-ã³ã¡ã³ããŸãã¯PMã§ãããèŠãŠããããã§ãã
ãããã¯æ¿å
¥äœçœ®ã®å€æŽ
å³é¢å
ã®ãããã¯ã衚瀺ãããå Žæã§ã¯ã次ã®2ã€ã®ããšã«äŸåã
ãŠäºåã«äºæž¬ããããš
ã¯äžå¯èœã§ãã
- ãããã¯å®çŸ©ã§æå®ãããåºç¹ããã
- ãããã¯ãšã³ããªã§æå®ãããæ¿å
¥ãã€ã³ãããã
ãã®äŸã§ã¯ãåºç¹ã¯ãããã¯ã®äžå¿ã«ãããŸãã
ãããã¯å®çŸ©ãäœæãããšãã«ãåºç¹ãæç€ºçã«æå®ããããšã¯ãããŸããããã®ãããªå ŽåãAutoCADã¯åºç¹ãåç¹ãšèŠãªããŸãã ãã®äŸã§ã¯ã座æšã®äžå¿ãšäžèŽããããã«ããã£ã®ã¥ã¢ã®ãäžå¿ããç¹å¥ã«éžæãããŠããŸãã
ãããã¯ãšãã£ã¿ãŒïŒãããè¡ãæ¹æ³ãæçš¿ã®æåã®ã»ã¯ã·ã§ã³ã§èª¬æããŸããïŒãŸãã¯.NET APIã䜿çšããŠããããã¯ã®ããŒã¹å®çŸ©ãã€ã³ããæåã§å€æŽã§ããŸããåŸè
ã®å Žåããã®ç®çã®ããã«Origin
ã¯ã©ã¹ããããã£ã䜿çšããBlockTableRecord
ãŸããäŸãšããŠããããã¯å®çŸ©ã®åºç¹ãå·Šäžé
ã«ç§»åããŠã¿ãŸãããããããè¡ãã«ã¯ããããã¯ã®ååãæå®ããåŸãããããã£ãèšå®ããŸãOrigin
ã // btr.Name = blockName; // btr.Origin = new Point3d(-50, -125, 0);
-50ãš-125ã®æ°å€ã¯ãããããX軞ãšYè»žã«æ²¿ã£ããããã¯ã®æå°åº§æšã§ãïŒãããã¯ã®å€åŽã®å¢çã圢æããããªã©ã€ã³ã®å·Šäžã®é ç¹ã«ã¯ããã®ãããªåº§æšããããŸãïŒãçµæïŒ
ãããã¯ãç§»åããŸããã æ¬¡ã«ããããã¯ã®æ¿å
¥ãã€ã³ããæ±ããŸãããããã¯ãåºçŸãããã³ã«èšå®ããããããã¯ãæ¿å
¥ããåŸããã®åºç¹ãã©ãã«ãããã瀺ããŸãããã®ããããã£ã¯ãã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãŒã§èšå®ãããŸããBlockReference
ããšãã°ã次ã®ããã«ãªããŸãã BlockReference br = new BlockReference(new Point3d(150, 150, 0), btrId)
åºç¹ãšæ¿å
¥ç¹ãåæã«å€æŽãããšã次ã®å³ã衚瀺ãããŸãã
.
Position
ã¯ã©ã¹ã®ããããã£ã䜿çšããŠãããã¯æ¿å
¥ãã€ã³ãã倿Žããããšãã§ããŸãBlockReference
ã BlockReference br = new BlockReference(Point3d.Origin, btrId); br.Position = new Point3d(150, 150, 0);
广ã¯ãã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãŒã§ãã€ã³ããçŽæ¥èšå®ããå ŽåãšåãBlockReference
ã§ãããããã¯å
ã§ãããã¯ã䜿çšãã
ããã§ã¯ãããã¯ã倧奜ããªã®ã§ããããã¯ãããã€ã远å ããŠãæç»ãåçŽåããªããæç»ãåçŽåããŸãããããããã¯ããããã¯å®çŸ©ã«è¿œå ããããšã¯é£ãããããŸãããäž»ãªæ©èœã¯ããããã¯ã«ãžãªã¡ããªããªããã£ãã远å ããã®ã§ã¯ãªããè£å©ãããã¯ã®ãªã«ã¬ã³ã¹ã远å ããå Žåããã®è£å©ãããã¯ã®å®çŸ©ãããã¥ã¡ã³ããããã¯ã®ããŒãã«ã«ããããšã確èªããå¿
èŠãããããšã§ããããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand")] public void HabrCommand() { // Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; // "Editor" AutoCAD Editor ed = doc.Editor; // const string blockName = "ltBlock"; // const string auxBlockName = "starBlock"; // Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { // BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite); //*** // 0 - ( ID ) //*** // , // - ID ObjectId btrIdAux; if (bt.Has(auxBlockName)) { btrIdAux = bt[auxBlockName]; } else { // , BlockTableRecord btr = new BlockTableRecord(); btr.Name = auxBlockName; // , ID btrIdAux = bt.Add(btr); // tr.AddNewlyCreatedDBObject(btr, true); // Polyline poly = new Polyline(); poly.SetDatabaseDefaults(); poly.AddVertexAt(0, new Point2d(0, -6), 0, 0, 0); poly.AddVertexAt(1, new Point2d(-9, -12), 0, 0, 0); poly.AddVertexAt(2, new Point2d(-7, -2), 0, 0, 0); poly.AddVertexAt(3, new Point2d(-14, 6), 0, 0, 0); poly.AddVertexAt(4, new Point2d(-5, 6), 0, 0, 0); poly.AddVertexAt(5, new Point2d(0, 15), 0, 0, 0); poly.AddVertexAt(6, new Point2d(5, 6), 0, 0, 0); poly.AddVertexAt(7, new Point2d(14, 6), 0, 0, 0); poly.AddVertexAt(8, new Point2d(7, -2), 0, 0, 0); poly.AddVertexAt(9, new Point2d(9, -12), 0, 0, 0); poly.AddVertexAt(10, new Point2d(0, -6), 0, 0, 0); // btr.AppendEntity(poly); tr.AddNewlyCreatedDBObject(poly, true); } //*** // ( ID ) //*** //*** // 1 - ( ID ) //*** // , // - ID ObjectId btrId; if (bt.Has(blockName)) { btrId = bt[blockName]; } else { // , BlockTableRecord btr = new BlockTableRecord(); btr.Name = blockName; // , ID btrId = bt.Add(btr); // tr.AddNewlyCreatedDBObject(btr, true); //*** // 2 - //*** // Polyline polyExt = new Polyline(); polyExt.SetDatabaseDefaults(); polyExt.AddVertexAt(0, new Point2d(-50, -125), 0, 0, 0); polyExt.AddVertexAt(1, new Point2d(-50, 105), 0, 0, 0); polyExt.AddVertexAt(2, new Point2d(-20, 125), 0, 0, 0); polyExt.AddVertexAt(3, new Point2d(20, 125), 0, 0, 0); polyExt.AddVertexAt(4, new Point2d(50, 105), 0, 0, 0); polyExt.AddVertexAt(5, new Point2d(50, -125), 0, 0, 0); polyExt.AddVertexAt(6, new Point2d(-50, -125), 0, 0, 0); // btr.AppendEntity(polyExt); tr.AddNewlyCreatedDBObject(polyExt, true); // Polyline polyIn = new Polyline(); polyIn.SetDatabaseDefaults(); polyIn.AddVertexAt(0, new Point2d(-5, -125), 0, 0, 0); polyIn.AddVertexAt(1, new Point2d(-5, 125), 0, 0, 0); polyIn.AddVertexAt(2, new Point2d(5, 125), 0, 0, 0); polyIn.AddVertexAt(3, new Point2d(5, -125), 0, 0, 0); // btr.AppendEntity(polyIn); tr.AddNewlyCreatedDBObject(polyIn, true); // Circle cir = new Circle(); cir.SetDatabaseDefaults(); cir.Center = new Point3d(0, 90, 0); cir.Radius = 15; // btr.AppendEntity(cir); tr.AddNewlyCreatedDBObject(cir, true); // BlockReference starLeft = new BlockReference(new Point3d(-27, -75, 0), btrIdAux); btr.AppendEntity(starLeft); tr.AddNewlyCreatedDBObject(starLeft, true); BlockReference starRight = new BlockReference(new Point3d(27, -75, 0), btrIdAux); btr.AppendEntity(starRight); tr.AddNewlyCreatedDBObject(starRight, true); } //*** // 3 - //*** // BlockTableRecord ms = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); // , ID BlockReference br = new BlockReference(new Point3d(150, 150, 0), btrId); // ms.AppendEntity(br); tr.AddNewlyCreatedDBObject(br, true); // tr.Commit(); } }
ããã§ãæŠããŠãã³ã¡ã³ãããããšã¯äœããããŸãããè£å©ãããã¯ã®å®çŸ©ããããã¯ããŒãã«ã«è¿œå ããŠãããè£å©ãããã¯ã®ãšã³ããªãäœæããæ¿å
¥ãã€ã³ãã®åº§æšãèšå®ããŸããç°¡åãªç¬ç«ããæŒç¿ãšããŠãèªè
ã¯ãããã¯èŠçŽ ããã€ã³ãããæ³šæçªå·1500ã«åŸã£ãŠãµã€ãºãšäœçœ®ãæå®ããŠãã ããããããã¯ã䜿çšããçç±
äž»ã«2ã€ã®çç±ããããŸã... 2çªç®ããå§ããŸãããã第äºã®çç±
å³é¢ã«åãã¿ã€ãã®ãªããžã§ã¯ãã倿°å«ãŸããŠããå Žåããããã¯ã䜿çšãããšãå³é¢ãã¡ã€ã«ã®ãµã€ãºã倧å¹
ã«åæžãããŸããæ¬¡ã®ã³ãŒãã¯ãããæããã®ã«åœ¹ç«ã¡ãŸãããã©ã°ã€ã³ã³ãŒãïŒ using System; using System.IO; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.EditorInput; using acad = Autodesk.AutoCAD.ApplicationServices.Application; namespace HabrPlug_SimpleBlock { public class ClassMyAutoCADDLL_SimpleBlock { public class Commands : IExtensionApplication { // , public void drawFigure(double x, double y) { // Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; // Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { // BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite); // BlockTableRecord ms = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite); // Polyline polyExt = new Polyline(); polyExt.SetDatabaseDefaults(); polyExt.AddVertexAt(0, new Point2d(x - 50, y - 125), 0, 0, 0); polyExt.AddVertexAt(1, new Point2d(x - 50, y + 105), 0, 0, 0); polyExt.AddVertexAt(2, new Point2d(x - 20, y + 125), 0, 0, 0); polyExt.AddVertexAt(3, new Point2d(x + 20, y + 125), 0, 0, 0); polyExt.AddVertexAt(4, new Point2d(x + 50, y + 105), 0, 0, 0); polyExt.AddVertexAt(5, new Point2d(x + 50, y - 125), 0, 0, 0); polyExt.AddVertexAt(6, new Point2d(x - 50, y - 125), 0, 0, 0); // ms.AppendEntity(polyExt); tr.AddNewlyCreatedDBObject(polyExt, true); // Polyline polyIn = new Polyline(); polyIn.SetDatabaseDefaults(); polyIn.AddVertexAt(0, new Point2d(x - 5, y - 125), 0, 0, 0); polyIn.AddVertexAt(1, new Point2d(x - 5, y + 125), 0, 0, 0); polyIn.AddVertexAt(2, new Point2d(x + 5, y + 125), 0, 0, 0); polyIn.AddVertexAt(3, new Point2d(x + 5, y - 125), 0, 0, 0); // ms.AppendEntity(polyIn); tr.AddNewlyCreatedDBObject(polyIn, true); // Circle cir = new Circle(); cir.SetDatabaseDefaults(); cir.Center = new Point3d(x, y + 90, 0); cir.Radius = 15; // ms.AppendEntity(cir); tr.AddNewlyCreatedDBObject(cir, true); // , Polyline starLeft= new Polyline(); starLeft.SetDatabaseDefaults(); starLeft.AddVertexAt(0, new Point2d(x - 27, y - 75 - 6), 0, 0, 0); starLeft.AddVertexAt(1, new Point2d(x - 27 - 9, y - 75 - 12), 0, 0, 0); starLeft.AddVertexAt(2, new Point2d(x - 27 - 7, y - 75 - 2), 0, 0, 0); starLeft.AddVertexAt(3, new Point2d(x - 27 - 14, y - 75 + 6), 0, 0, 0); starLeft.AddVertexAt(4, new Point2d(x - 27 - 5, y - 75 + 6), 0, 0, 0); starLeft.AddVertexAt(5, new Point2d(x - 27, y - 75 + 15), 0, 0, 0); starLeft.AddVertexAt(6, new Point2d(x - 27 + 5, y - 75 + 6), 0, 0, 0); starLeft.AddVertexAt(7, new Point2d(x - 27 + 14, y - 75 + 6), 0, 0, 0); starLeft.AddVertexAt(8, new Point2d(x - 27 + 7, y - 75 - 2), 0, 0, 0); starLeft.AddVertexAt(9, new Point2d(x - 27 + 9, y - 75 - 12), 0, 0, 0); starLeft.AddVertexAt(10, new Point2d(x - 27, y - 75 - 6), 0, 0, 0); ms.AppendEntity(starLeft); tr.AddNewlyCreatedDBObject(starLeft, true); Polyline starRight = new Polyline(); starRight.SetDatabaseDefaults(); starRight.AddVertexAt(0, new Point2d(x + 27, y - 75 - 6), 0, 0, 0); starRight.AddVertexAt(1, new Point2d(x + 27 - 9, y - 75 - 12), 0, 0, 0); starRight.AddVertexAt(2, new Point2d(x + 27 - 7, y - 75 - 2), 0, 0, 0); starRight.AddVertexAt(3, new Point2d(x + 27 - 14, y - 75 + 6), 0, 0, 0); starRight.AddVertexAt(4, new Point2d(x + 27 - 5, y - 75 + 6), 0, 0, 0); starRight.AddVertexAt(5, new Point2d(x + 27, y - 75 + 15), 0, 0, 0); starRight.AddVertexAt(6, new Point2d(x + 27 + 5, y - 75 + 6), 0, 0, 0); starRight.AddVertexAt(7, new Point2d(x + 27 + 14, y - 75 + 6), 0, 0, 0); starRight.AddVertexAt(8, new Point2d(x + 27 + 7, y - 75 - 2), 0, 0, 0); starRight.AddVertexAt(9, new Point2d(x + 27 + 9, y - 75 - 12), 0, 0, 0); starRight.AddVertexAt(10, new Point2d(x + 27, y - 75 - 6), 0, 0, 0); ms.AppendEntity(starRight); tr.AddNewlyCreatedDBObject(starRight, true); // tr.Commit(); } } // , public void drawBlock(double x, double y) { // Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; // "Editor" AutoCAD Editor ed = doc.Editor; // const string blockName = "ltBlock"; const string auxBlockName = "starBlock"; // Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { // BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite); /
ã³ãŒãã¯éåžžã«ç°¡åã§ãã2ã€ã®æé ããããŸã- drawFigure(double x, double y)
ãšdrawBlock(double x, double y)
ãæåã®ãããã¯ã¯ãæå®ããããã€ã³ãã«ãããã¯ãæ£ç¢ºã«ç¹°ãè¿ãäžé£ã®å³åœ¢ãæç»ãã2çªç®ã®ãããã¯ã¯æå®ããããã€ã³ãã«ãããã¯ã®ãªã«ã¬ã³ã¹ãäœæããŸããHabrCommand_DrawFiguresãšHabrCommand_DrawBlocksã®2ã€ã®ã³ãã³ããç¶ããŸãã1ã€ç®ã¯å³é¢ã«10,000ã»ããã®å³åœ¢ãæç»ãã2ã€ç®ã¯ãããã¯ã®10,000åã®åºçŸãæç»ããŸããAutoCADãå®è¡ããæåã®ã³ãã³ããå®è¡ããŠãå³é¢ãä¿åããŸããæ¬¡ã«ãAutoCADãéããŠã2çªç®ã®ã³ãã³ãã«å¯ŸããŠåãæé ãç¹°ãè¿ããŸãããã®çµæã2ã€ã®dwgãã¡ã€ã«ãååŸããŸãããµã€ãºãæ¯èŒããŸããçµããã¯å°ãäºæž¬å¯èœã§ãïŒ:

:

第äžã®çç±
å³é¢ãã¡ã€ã«ã®ãµã€ãºããããã«å€§ããããããšã¯è¯ããããŸããããããã»ã©æãã¯ãããŸããããã·ã¢ã¯å€§ããã誰ããååãªã¹ããŒã¹ããããŸãããã ããåé¡ããããããæ·±å»ã§ããåè¿°ã®æ³šæçªå·1500ã§ãã·ã§ã«ããŒã¹ãã©ããã®ãã¿ã³ã®äœçœ®ãå³å¯ã«èŠå¶ãã远å ãè¡ããããã¹ãŠã®ã·ã§ã«ããŒã¹ãã©ããã®çŸåšã®äœçœ®ãããããã«é«ãäœçœ®ã«åãç§»åããå¿
èŠããããšæ³åããŠãã ããããããã¯ã䜿çšããå Žåãã¿ã¹ã¯ã¯æ°è¡ã®ã³ãŒãã§è§£æ±ºãããŸãããããã¯ã®å®çŸ©ãéããããã§åãèŠã€ãããã®äžå¿ãç®çã®ãã€ã³ãã«ç§»åããã ãã§ãããããã¯ã®ãã¹ãŠã®åºçŸã¯åãå®çŸ©ãåç
§ãããããã³ãã³ãã®å®è¡åŸããããã¯ãã¹ãŠèªåçã«æŽæ°ãããŸããããŒã ã³ãŒãïŒ [CommandMethod("HabrCommand_MoveButton")] public void HabrCommand_MoveButton() { // Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; // "Editor" AutoCAD Editor ed = doc.Editor; // const string blockName = "ltBlock"; // Transaction tr = db.TransactionManager.StartTransaction(); using (tr) { // BlockTable bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForWrite); // , // - if (!bt.Has(blockName)) { ed.WriteMessage("Block not found!"); return; } else { // BlockTableRecord btr = tr.GetObject(bt[blockName], OpenMode.ForWrite) as BlockTableRecord; // ID foreach (ObjectId id in btr) { // ID , DBObject obj = tr.GetObject(id, OpenMode.ForRead); // - (Circle), if (obj.GetType() == typeof(Circle)) { obj.UpgradeOpen(); (obj as Circle).Center = new Point3d(0, 100, 0); } } // tr.Commit(); } }
泚æïŒ, . ; .
(.)
(.) . , , , . , ,
.
现éšïŒAutoCADã¯ãããã¯ã®ãã¹ãŠã®åºçŸãå®éã«æŽæ°ããŸãããããã確èªããã«ã¯ãREGENã³ãã³ããå®è¡ããå¿
èŠããããŸãã
çµæïŒ:

:

ãã¡ããããã®ãããªæäœã¯ããããã¯ã®åºçŸã§ã¯ãªã幟äœåŠçå³åœ¢ã®å Žåã«å®è¡ã§ããŸãããå³é¢å
šäœãæäœããåã®äžå¿ã®åº§æšã1åã§ã¯ãªã1äžå倿Žããå¿
èŠããããŸãããã¹ãã¯è¡ããŸããã§ãããããã®æé ã¯ãããã¯å®çŸ©ãç·šéãããããå°ãæéãããããšæããŸããäžæ¹ãåã³ã€ã³ã«ã¯è¡šãšè£ãããããããã¯ã䜿çšãããšãã®å¶éã課ããããŸããããšãã°ã11è¡ç®ãš42åç®ã«ããäžeã®è©ç« ããã£ããã³ã®è©ç« ã«çœ®ãæããå¿
èŠãããå Žåãéåžžã®æ¹æ³ã§ãããã¯ã䜿çšãããšããããè¡ãããšãã§ããŸãããããªãã¯è¹é·ã®ããã«æ°ãããããã¯ãäœæããããæãæåã§ä»äžããããããã€ãã®è¿œå ã®åé¯ã«é Œããªããã°ãªããŸãããç°¡åãªçµè«ïŒãŸãããããªãïŒïŒãããã¯ã䜿çšãããšãåŽåãšæéã倧å¹
ã«ç¯çŽã§ããŸãããå¿
èŠã«å¿ããŠåççã«äœ¿çšããå¿
èŠããããŸããããã¯çµãããšæããŸããæ¬¡åã¯ãå³é¢å
ã®ãªããžã§ã¯ãã®æ€çŽ¢ãšç·šéã«ã€ããŠèª¬æããŸãããã€ãã®ããã«ãç§ã¯ã³ã¡ã³ããPMã§ãã£ãŒãããã¯ãã³ã¡ã³ããææ¡ãåãã§ããŸãããæž
èŽããããšãããããŸããïŒ