рдСрдЯреЛрдХреИрдб рдХреЗ рд▓рд┐рдП C # рдореЗрдВ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рд▓реЗрдЦрди рдкреНрд▓рдЧрдЗрдиреНрд╕

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕


рдореИрдВ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ, рд╕реА ++ рдЬреНрдЮрд╛рди рдХрд╛ рдПрдХ "рд╕реНрдХреВрд▓" рд╕реНрддрд░, рд╕реА # рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ (2 рд╡рд░реНрд╖) рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдиреБрднрд╡, рдСрдЯреЛ рдХреИрдб рдореЗрдВ рд╢реВрдиреНрдп рдЕрдиреБрднрд╡
рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ LISP рдСрдЯреЛ-рдХреИрдб рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛, рдЬреЛ рд╕реАрдорд╛ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ / рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдПрдордПрд╕ рд╡рд░реНрдб / рдПрдХреНрд╕рдПрдордПрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ - рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдЪреВрдВрдХрд┐ рд▓рд┐рд╕реНрдк (рдореЗрд░реЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо) рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдкрдардиреАрдпрддрд╛ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЧрддрд┐ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдореИрдВрдиреЗ C ++ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ C # рдкрд░ рдмрд╕ рдЧрдпрд╛



рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдБ:


1. рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдЕрд▓рдорд╛рд░рд┐рдпреЛрдВ рдкрд░ рд░рдЦреЛ рдЬреЛ рдореИрдВрдиреЗ рдСрдЯреЛрдХреИрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрд╛ рдерд╛ред
2. рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдмрд╣реБрдд рдХрдо рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
3. рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдЬреИрд╕реЗ "рдЖрдк рдЗрд╕реЗ рдЧрд▓рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдФрд░ рдмреЗрд╣рддрд░ рд╣реИ ..."

рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИред рдПрдХ рдкреНрд▓рдЧрдЗрди рдмрдирд╛рдПрдБред


ClassLibrary рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C # рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реИрдВ рдкреНрд░рдмрдВрдзрд┐рдд рдСрдЯреЛрдХреИрдб рдПрдкреАрдЖрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред
рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╣реИ:
C: \ Program Files \ AutoCAD 2007 \ acdbmgd.dll
C: \ Program Files \ AutoCAD 2007 \ acmgd.dll

рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ:
using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; namespace AutocadPlugin { public class test : IExtensionApplication { [CommandMethod("hello")] public void Helloworld() { var editor = Application.DocumentManager.MdiActiveDocument.Editor; editor.WriteMessage("  Autocad "); } public void Initialize() { var editor = Application.DocumentManager.MdiActiveDocument.Editor; editor.WriteMessage(" .."+Environment.NewLine); } public void Terminate() { } } } 


IExtensionApplication рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рдСрдЯреЛрдХреИрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рддреЗрдЬреА рд╕реЗ рд╣реЛрдЧрд╛ред рд╕рд╛рде рд╣реА рдЖрдк рдкреНрд░рд╛рд░рдВрдн / рд╕рдорд╛рдкреНрддрд┐ рдкреНрд▓рдЧрдЗрди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдСрдЯреЛрдХреИрдб рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдиреЗрдЯрд▓реЛрдб рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреНрд▓рдЧрдЗрди рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ (рдкреНрд░рдмрдВрдзрд┐рдд dll рдЪрдпрди рд╡рд┐рдВрдбреЛ рдЦреБрд▓рддреА рд╣реИ)
рдЕрдм, рдЬрдм рдЖрдк рд╣реИрд▓реЛ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реЗрдЧреАред

рдСрдЯреЛрдХреИрдб рдЖрд╡реЗрджрди рд╕рдВрд░рдЪрдирд╛:


рд╣рдо рд╕реНрдХреНрд░реАрди рдкрд░ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЧреНрд░рд╛рдлрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдПрдВрдЯрд┐рдЯреА рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ
рджреГрд╢реНрдпрдорд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрджреГрд╢реНрдп рд╕реВрдЪрдирд╛ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ - рдкрд░рддреЗрдВ , рд░реЗрдЦрд╛ рдкреНрд░рдХрд╛рд░ , рдЖрдпрд╛рдо рд╢реИрд▓рд┐рдпрд╛рдБ , рддрд╛рд▓рд┐рдХрд╛ рд╢реИрд▓рд┐рдпрд╛рдБ , рдЖрджрд┐ред
рдпрд╣ рд╕рдм рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдореЗрдВ , рдЯрд╛рдЗрдк рдЯрд╛рдЗрдк рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдЯрд╛рдЗрдкрдЯреЗрдХреНрдХрд╛рд░реНрдб рдЯрд╛рдЗрдк рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛



рдФрд░ рдкрдврд╝реЗрдВ: рдСрдЯреЛрдХреИрдб рд╕рддреНрд░реЛрдВ рдХреЗ рдмреАрдЪ рд╣реИрдВрдбрд▓ рд▓рдЧрд╛рддрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдХрд┐рд╕реА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ ObjectId рдХреЗрд╡рд▓ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реМрдВрдкреА рдЧрдИ рд╡рд╕реНрддреБ Ids рдЕрдм рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЦреБрд▓рдиреЗ рдХреЗ рд╕рдордп рдЕрд▓рдЧ рд╣реЛред

рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рдЖрдорддреМрд░ рдкрд░, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдПрдХ рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд╕рдВрд╢реЛрдзрд┐рдд рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдз рд▓реЗрдирджреЗрди рд╡рд╛рдкрд╕ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╣реИрдВред
рд▓реЗрди-рджреЗрди рдХреЗ рджреМрд░рд╛рди, рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ 3 ForRead, ForWrite, ForNotify рдореЛрдб рдореЗрдВ рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкрд╣рд▓реЗ рджреЛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рд╣реИ, рддреАрд╕рд░реЗ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЗ рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдореИрдВ рдЕрднреА рддрдХ рдкрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖ рд╣реВрдВ
ForWrite рдореЛрдб рдореЗрдВ, рдСрдЯреЛрдХреИрдб рдЕрддрд┐рд░рд┐рдХреНрдд рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк "ForRead" рдХреЗ рд░реВрдк рдореЗрдВ рдЦреЛрд▓реА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ UpgradOpen () рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдореЛрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд┐ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧреАред

рдЕрдкрдиреЗ ObjectId рджреНрд╡рд╛рд░рд╛ рдкреЙрд▓реАрд▓рд╛рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
 // UPDATE:     ,   .     ,     UpgradeOpen  , ..    public static Polyline GetPolylineByEname(ObjectId ename) { if (ename == ObjectId.Null) return null; Polyline polyline = null; var db = Application.DocumentManager.MdiActiveDocument.Database; using (var transaction = db.TransactionManager.StartTransaction()) { return transaction.GetObject(ename, OpenMode.ForRead) as Polyline; } } 


рд▓реЗрди-рджреЗрди рдиреЗрд╕реНрдЯреЗрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЬрдм рдПрдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рд▓реЗрдирджреЗрди рд░рджреНрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдмрдЪреНрдЪреЗ рднреА рд░рджреНрдж рдХрд░ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд░ рдкрд╛рдпрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рдХрд╣рд╛рдБ рдереА - рдЪрд┐рддреНрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╕рд╣реЗрдЬреЗ рдирд╣реАрдВ рдЧрдП рдереЗред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдореИрдВ рдКрдкрд░реА рд▓реЗрдирджреЗрди рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рднреВрд▓ рдЧрдпрд╛ред
рдЪрд┐рддреНрд░рдг
 public void OwnerTransFunction() { var db = Application.DocumentManager.MdiActiveDocument.Database; using (var transaction = db.TransactionManager.StartTransaction()) { //   ChangePolylineInChildTransation() } } public void ChangePolyline() { var db = Application.DocumentManager.MdiActiveDocument.Database; using (var transaction = db.TransactionManager.StartTransaction()) { //   //   transaction.Commit(); //       ,       Commit'a    } } 


рдЕрджреНрдпрддрди: рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдореЗрд╢рд╛ рд▓реЗрдирджреЗрди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдорд┐рдЯ () рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬрдм рдЖрдкрдХреЛ рд▓реЗрдирджреЗрди рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рд▓реЗрди-рджреЗрди рдкреНрд░рддрд┐рдмрджреНрдз рдирд╣реАрдВ рд╣реИ, рддреЛ рд▓реЗрдирджреЗрдиред Aort () рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред

рд╢рдмреНрджрдХреЛрд╢реЛрдВ


рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ DWG рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рддрд╛рдХрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ
рдореБрдЭреЗ рдбреНрд░рд╛рдЗрдВрдЧ рдореЗрдВ рджреЛ рддрд░рд╣ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдЖрдП - NamedObjectDictionary рдФрд░ ExtensionDictionary
рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рд░рд┐рдХреЙрд░реНрдб (рд░рд┐рдХреЙрд░реНрдб) рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред
рдкрд╛рда рдХреБрдВрдЬреА рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИред

NamedObjectDictionary - рд╡реИрд╢реНрд╡рд┐рдХ рдбреНрд░рд╛рдЗрдВрдЧ рд╢рдмреНрджрдХреЛрд╢ред рдЬрдм рдХреЛрдИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореБрдЦреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдерд╛ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдПрдХреНрд╕рдЯреЗрдВрдбрдмреЙрд░рдб - рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдмреНрджрдХреЛрд╢, рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдк рдЗрдХрд╛рдИ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдПрдХреНрд╕рдЯреЗрдВрд╢рдирдСрдбрд░ рд╕реЗ рд▓реЗрдЦрди рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг
 public static void SetExtDictionaryValueString(ObjectId ename, string key, string value) { if (ename == ObjectId.Null) throw new ArgumentNullException("ename"); if (String.IsNullOrEmpty(key)) throw new ArgumentNullException("key"); var doc = Application.DocumentManager.MdiActiveDocument; using (var transaction = doc.Database.TransactionManager.StartTransaction()) { var entity = transaction.GetObject(ename, OpenMode.ForWrite); if (entity == null) throw new DataException("      ExtensionDictionary: entity  ObjectId=" + ename + "  "); //    extDictionary var extensionDictionaryId = entity.ExtensionDictionary; if (extensionDictionaryId == ObjectId.Null) { entity.CreateExtensionDictionary(); extensionDictionaryId = entity.ExtensionDictionary; } var extDictionary = (DBDictionary) transaction.GetObject(extensionDictionaryId, OpenMode.ForWrite); //     if (String.IsNullOrEmpty(value)) { if (extDictionary.Contains(key)) extDictionary.Remove(key); return; } var xrec = new Xrecord(); xrec.Data = new ResultBuffer(new TypedValue((int) DxfCode.ExtendedDataAsciiString, value)); extDictionary.SetAt(key, xrec); transaction.AddNewlyCreatedDBObject(xrec, true); Debug.WriteLine(entity.Handle+"['" + key + "'] = '" + value + "'"); transaction.Commit(); } } public static string GetExtDictionaryValueString(ObjectId ename, string key) { if (ename == ObjectId.Null) throw new ArgumentNullException("ename"); if (String.IsNullOrEmpty(key)) throw new ArgumentNullException("key"); var doc = Application.DocumentManager.MdiActiveDocument; using (var transaction = doc.Database.TransactionManager.StartTransaction()) { var entity = transaction.GetObject(ename, OpenMode.ForRead); if (entity == null) throw new DataException("      ExtensionDictionary:   ObjectId=" + ename + "  "); var extDictionaryId = entity.ExtensionDictionary; if (extDictionaryId == ObjectId.Null) throw new DataException("      ExtensionDictionary:   "); var extDic = (DBDictionary)transaction.GetObject(extDictionaryId, OpenMode.ForRead); if (!extDic.Contains(key)) return null; var myDataId = extDic.GetAt(key); var readBack = (Xrecord)transaction.GetObject(myDataId, OpenMode.ForRead); return (string)readBack.Data.AsArray()[0].Value; } } 


рдЧреНрд▓реЛрдмрд▓ рдбрд┐рдХреНрд╢рдирд░реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИ, рдХреЗрд╡рд▓ рдбреАрдмрдбрд░ рд╡рд╕реНрддреБ рдЗрд╕ рддрд░рд╣ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ:
 var dictionary = (DBDictionary) transaction.GetObject(db.NamedObjectsDictionaryId, OpenMode.ForWrite); 


рдореИрдВрдиреЗ рдФрд░ рдХреНрдпрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛


1. рдкреНрд▓рдЧрдЗрди рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк
рдкреНрд▓рдЧрдЗрди рдХреЗ рдкрд╛рдВрдЪ-рд╕реЗрдХрдВрдб рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ-рджреЛ рджрд░реНрдЬрди рдмрд╛рд░ рдиреЗрдЯрд▓реЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕рд╕реЗ рдердХ рдЧрдпрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рд▓рдЧрд╛ред
рдЦреЛрдЬ рдХреЗ рджреМрд░рд╛рди, рдореБрдЭреЗ .NET рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рдСрдЯреЛрд▓реЙрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд▓реЗрдЦ рдЖрдпрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдЖрдкрдХреЛ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
 Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Autodesk\AutoCAD\R17.0\ACAD-5001:419\Applications\GeocomplexPlugin] "LOADCTRLS"=dword:00000002 "MANAGED"=dword:00000001 "LOADER"="C:\\GeoComplexAutocadPlugin\\AutocadGeocomplexPlugin.dll" 

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
R17.0 - рдСрдЯреЛрдХреИрдб 2007
рд░реВрд╕реА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП 419
рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП 409
GeocomplexPlugin - рд╡рд┐рднрд╛рдЬрди рдмрдирд╛рдпрд╛
LOADCTRLS = 2 - рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдСрдЯреЛрдХреИрдб рдкрд░ рд▓реЛрдбред рдорд╛рдВрдЧ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд▓рдЧ-рдЗрди рд▓реЛрдб рд╣реЛрдиреЗ рдкрд░ рдЗрд╕рдХреА рдПрдХ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХреА рдЬрд╛рддреА рд╣реИред
рд▓реЛрдбрд░ - рдкреНрд▓рдЧрдЗрди рдХрд╛ рдорд╛рд░реНрдЧ


2. рдбрд┐рдмрдЧ
рдХреНрдпреЛрдВрдХрд┐ рд╡реАрдПрд╕ рдореЗрдВ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдбрд┐рдмрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдореБрдЭреЗ рдХреБрдЫ рдЪрд░рдгреЛрдВ рдореЗрдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдерд╛ред
рдЪреВрдВрдХрд┐ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдСрдЯреЛрдХреИрдб рдХрд╛ рд╕рдВрдкрд╛рджрдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдорд╛рдирдХ рдбрд┐рдмрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реВрдВред
рдбрд┐рдмрдЧ рдХреЗрд╡рд▓ рдбрд┐рдмрдЧ рдореЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдбрд┐рдмрдЧ рд╡реНрдпреВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓рд╛рдХрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдЕрджреНрдпрддрди: рдЪрд░рдг-рджрд░-рдЪрд░рдг рдбреАрдмрдЧрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди:
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╣рд░рд╛рдпрд╛:
рдСрдЯреЛрдХреИрдб рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, acad.exe.config рдиреЗ v4.0 рдкрд░ рд░рдирдЯрд╛рдЗрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛:
  <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup> <runtime> <generatePublisherEvidence enabled="false"/> </runtime> </configuration> 


4.0 рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рд░рдирдЯрд╛рдЗрдо рдХреЛ рдмрджрд▓рд╛
рдФрд░ рдЕрд╕реЗрдВрдмрд▓реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЕрд╕реЗрдВрдмрд▓реАрдЗрдиреНрдлреЛ.рдЗрдВ.рдХреЗ рдиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ AllowPartiallyTrustedCallers рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА



3. рдПрдбрд┐рдЯрд░ рдореЗрдВ рдХрдорд╛рдВрдб рднреЗрдЬрдирд╛
рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдСрдЯреЛрдХреИрдб .NET рдПрдкреАрдЖрдИ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдпрд╛ рд╡реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред
рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИ, ZoomExtents рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 var doc = Application.DocumentManager.MdiActiveDocument; doc.SendStringToExecute("_zoom _e ",false,false,true); 

рдСрдЯреЛрдХреИрдб рдореЗрдВ, рдПрдХ рд╕реНрдерд╛рди рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдЕрдиреБрдЧрд╛рдореА рд╕реНрдерд╛рди рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдХрдорд╛рдВрдб рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ _e рдХреЛ Editor'e рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╡рд╣ рдЖрдЧреЗ рдЗрдирдкреБрдЯ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рд╣рдореЗрд╢рд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред SendStringToExecute рдХрдорд╛рдВрдб рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдлрдВрдХреНрд╢рди рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрдВрдХрдбрд╝рд╛ рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рджреЗрдВ, "_zoom", "_e" рдХреА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЪрдпрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рд╡рд╣ рдЧрд▓рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдиреБрднрд╡ рдХрд░реЗрдЧрд╛ред
рд╣рдореЗрдВ рдЙрди рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреА рд╣реЛрдЧреА рдЬреЛ рддреБрд░рдВрдд рдЪрд▓рддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ:
 object acad = Application.AcadApplication; acad.GetType().InvokeMember("ZoomExtents", BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance | BindingFlags.InvokeMethod, null, acad, null); 



4. рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪрдпрди
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Editor'a Get * рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдИ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ - GetSelection, рдПрдХ GetEntity рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ ...
 var editor = Application.DocumentManager.MdiActiveDocument.Editor; var promtResult = editor.GetEntity(" "); editor.WriteMessage(Environment.NewLine); if (promtResult.Status == PromptStatus.OK) { editor.WriteMessage("Selected Object's ID: " + promtResult.ObjectId+Enviropment.NewLine); } 



рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рдЦреЛрдЬ рдиреЗ рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдП:
MdiActiveDocument.Database.Filename
MdiActiveDocument.Name
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╡реЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди
рд╡рд┐рд╖рдп рдкрд░ - рдореИрдВ Database.Filename рдЧреБрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред рдСрдЯреЛрд╕реИрд╡ рдХреЗ рдмрд╛рдж, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕реНрд╡рдпрдВ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╡рд┐рдкрд░реАрдд рдПрдХ рдСрдЯреЛрд╕реИрд╡ рдХреЙрдкреА -

рдореБрдЭреЗ рдорд╛рдирдХ .NET рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓рд╛:
Path.GetDirectoryName (Application.DocumentManager.MdiActiveDocument.Name);
рдпрджрд┐ рд▓реМрдЯрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╣реЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ


рдФрд░ рдХреБрдЫ рдФрд░ рдЙрдкрдпреЛрдЧреА рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ:


рдкреЙрд▓реАрд▓рд╛рдЗрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐) рдмрджрд▓реЗрдВ
 //    ( ): public static void UpdatePoints(this Polyline polyline, List<Point2d> newPoints) { if (polyline == null) throw new ArgumentNullException("polyline"); if (newPoints.Count < 2) throw new ArgumentException("     "); using (var transaction = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()) { //    ,      var pline = transaction.GetObject(polyline.ObjectId,OpenMode.ForWrite) as Polyline; if (pline == null) throw new DataException("!     "); var bulge = pline.GetBulgeAt(0); var start_width = pline.GetStartWidthAt(0); var end_width = pline.GetEndWidthAt(0); var prevPointsCount = pline.NumberOfVertices; //    //     ,    , .. Autocad      0  1  //    for (int i = prevPointsCount; i < prevPointsCount + newPoints.Count; i++) pline.AddVertexAt(i, newPoints[i - prevPointsCount], bulge, start_width, end_width); //    for (int i = prevPointsCount - 1; i >= 0; i--) pline.RemoveVertexAt(i); transaction.Commit(); } } 



рдкреЙрд▓реАрд▓рд╛рдЗрди (рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рдзрд┐) рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛:
 //    ( ): public static Point2d[] GetPoints(this Polyline polyline) { if (polyline == null) { Debug.WriteLine(" !      "); return null; } if (polyline.NumberOfVertices == 0) return null; var points = new List<Point2d>(); for (int i = 0; i < polyline.NumberOfVertices; i++) points.Add(polyline.GetPoint2dAt(i)); return points.ToArray(); } 


рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ


1. рдСрдЯреЛрдХреИрдб .NET рдбреЗрд╡рд▓рдкрд░ рдХреА рдЧрд╛рдЗрдб
рдЕрдВрдЧреНрд░реЗрдЬреА рдорд┐рдиреА-рд╕рдВрджрд░реНрдн, VB.NET, C # .NET, VBA рдкрд░ рдХреЛрдб рдирдореВрдиреЛрдВ рдХреЗ рд╕рд╛рде рдСрдЯреЛрдХреИрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд╕рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ
2. рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
рдХреАрди рд╡рд╛рд▓реНрдорд╕реНрд▓реЗ рдХрд╛ рдмреНрд▓реЙрдЧ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣рд╛рдЙрдЯреЛред C #, C # + COM, VB.NET, C ++ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред рдореИрдВ рд╡рд╣рд╛рдБ рдЦреЛрдЬ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдЖрдзреЗ Google рдЕрдиреБрд░реЛрдз "рдпрд╣ рдХреИрд╕реЗ рдХрд░реЗрдВ .." рдЗрд╕ рд╕рд╛рдЗрдЯ рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ
3. Caduser.ru, рдЙрдк-рдордВрдЪ ".NET"
рд░реВрд╕реА рднрд╛рд╖реА рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдЬреЛ рд╡рд┐рд╖рдп рдореЗрдВ рдкрд╛рд░рдВрдЧрдд рд╣реИрдВред рдХрдИ рдмрд╛рд░ рдореБрд╢реНрдХрд┐рд▓ рдЬрдЧрд╣реЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХреА

Source: https://habr.com/ru/post/In148844/


All Articles