{"id":268429,"date":"2015-11-18T11:14:06","date_gmt":"2015-11-18T08:14:06","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=268429"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=268429","title":{"rendered":"AutoCAD: \u0421\u0432\u044f\u0437\u044c \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438"},"content":{"rendered":"<p>       \u0427\u0430\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0445\u043e\u0442\u044f\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u2013 \u0422\u0430\u0431\u043b\u0438\u0446\u0435\u0439 Excel, \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0438\u043b\u0438 xml \u0444\u0430\u0439\u043b\u043e\u043c. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 AutoCAD \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438: _DataLink, dbConnect, attin, _script. \u041d\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u00ab\u043c\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u043a\u043e\u0432\u00bb \u0438 \u043d\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0431\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0435\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041e\u0431\u0440\u0430\u0437\u0446\u043e\u0432\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f FDO \u0432 AutoCAD Map 3D \u2013 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 (\u0438 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0434\u0430\u0436\u0435 \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044f\u043c\u0438) \u0438 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u044f (\u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430). \u041d\u043e \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439) \u0413\u0418\u0421 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0432\u0441\u0435\u043c. \u0418 \u0442\u043e\u0433\u0434\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0431\u043b\u0430\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2013 Lisp, C++, .Net, Delphi, Python \u0438 \u0442. \u0434.<br \/>  <a name=\"habracut\"><\/a><br \/>  \u041e\u0434\u043d\u0438\u043c \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u2013 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 \u0441\u0432\u044f\u0437\u044c \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0438\u043c\u043f\u043e\u0440\u0442\u0430\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439:<\/p>\n<ol>\n<li>\u0421\u0430\u043c \u0441\u0435\u0431\u044f \u0440\u0438\u0441\u0443\u0435\u0442 (\u043d\u043e \u043d\u0435 Custom object*)<\/li>\n<li>\u0418\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u0438\u0445 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e<\/li>\n<li>\u0423\u043c\u0435\u0435\u0442 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u044f \u0432 XML<\/li>\n<\/ol>\n<p>  * Custom object \u2013 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b ObjectARX, \u0434\u0430\u044e\u0449\u0438\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b, \u043d\u043e \u043e\u043d\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438 \u043f\u0440\u0438 \u0438\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 Custom object \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0432 <s>\u0442\u044b\u043a\u0432\u0443<\/s> Proxy-\u043e\u0431\u044a\u0435\u043a\u0442. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 AutoDESK \u044d\u0442\u043e Custom object \u0438, \u0447\u0442\u043e \u0431\u044b \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u0438\u0445 \u0432 \u00ab\u0433\u043e\u043b\u043e\u043c\u00bb AutoCAD\u2019\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 Object Enabler.<\/p>\n<p>  \u0412 AutoCAD\u2019\u0435 \u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0435, \u044d\u0442\u043e \u2013 XData \u0438 XRecord. \u041d\u043e \u044d\u0442\u043e \u0432\u0435\u0441\u044c\u043c\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0438 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u044d\u0442\u0438\u043c \u0434\u0430\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 AutoCAD. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0434\u0430\u043d\u043d\u044b\u0445, \u0430 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043c\u0438 \u0432 \u0447\u0435\u0440\u0442\u0435\u0436\u0435, \u0447\u0435\u0440\u0435\u0437 Handle.<\/p>\n<p>  \u041d\u0430\u0448 \u043e\u0431\u044a\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0443\u0433, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0443\u044e \u043c\u0435\u0442\u043a\u0443 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0443\u044e \u0440\u0430\u0434\u0438\u0443\u0441 \u044d\u0442\u043e\u0433\u043e \u043a\u0440\u0443\u0433\u0430, \u043d\u043e \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u044b\u0435 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b (\u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440 Solid3d \u0438\u043b\u0438 NurbSurface) \u2013 \u043b\u0438\u0448\u044c \u0431\u044b \u0443 \u043d\u0438\u0445 \u0431\u044b\u043b Handle. \u041d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0438 \u041e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u041c\u0435\u0442\u043a\u0438. \u041d\u043e \u0441\u0430\u043c\u043e\u0435 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u043e\u0432\u0435\u0441\u0438\u043c \u043d\u0430 \u0441\u043e\u0431\u044b\u0442\u0438\u0435 Modified. \u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043e\u0432 \u0438 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430 \u0432 XML. \u041d\u0443 \u0445\u0432\u0430\u0442\u0438\u0442, \u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u043b\u043e\u0432 \u2014 \u0431\u043e\u043b\u044c\u0448\u0435 \u043a\u043e\u0434\u0430.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">Class MyCircle<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>Imports System.Xml  Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Geometry  Public Class MyCircle     Private fCenter As Point3d     Private fRadius As Double      Private OID As ObjectId     Private textID As ObjectId      Public Sub New(cp As Point3d, r As Double, db As Database)         Me.fCenter = cp         Me.fRadius = R         '         Me.DrawMe(db)         Me.DrawLebel()     End Sub      Public Sub New(MyCircleData As XmlElement, db As Database)         Dim wHandle As New Handle(Long.Parse(MyCircleData.GetAttribute(&quot;Handle&quot;), Globalization.NumberStyles.HexNumber))         OID = New ObjectId         Me.fCenter = Me.ParsePoint(MyCircleData.GetAttribute(&quot;Center&quot;))         Me.fRadius = MyCircleData.GetAttribute(&quot;Radius&quot;)         If db.TryGetObjectId(wHandle, OID) Then             Me.UpgradeMe()         Else             Me.DrawMe(db)         End If         Me.DrawLebel()     End Sub      Public Sub UpgradeMe()         Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()             Dim wDBObj As Circle = OID.GetObject(OpenMode.ForWrite)             RemoveHandler wDBObj.Modified, AddressOf CirMod             wDBObj.Radius = Me.fRadius             wDBObj.Center = Me.fCenter             wDBObj.UpgradeOpen()             AddHandler wDBObj.Modified, AddressOf CirMod             acTrans.Commit()         End Using     End Sub      Public Sub UpgradeLabel()         Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()             Dim acText As DBText = textID.GetObject(OpenMode.ForWrite)             acText.Position = Me.fCenter             acText.TextString = Me.fRadius             acText.UpgradeOpen()             acTrans.Commit()         End Using     End Sub      Public Sub DrawMe(db As Database)         Using acTrans As Transaction = db.TransactionManager.StartTransaction()             Dim cNewCircle As New Circle(Me.fCenter, New Vector3d(0, 0, 1), Me.fRadius)             '\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043b\u0438 \u043b\u0438\u0441\u0442)             Dim btrCurrSpace As BlockTableRecord = acTrans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)             '\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0448 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432             OID = btrCurrSpace.AppendEntity(cNewCircle)             acTrans.AddNewlyCreatedDBObject(cNewCircle, True)             AddHandler cNewCircle.Modified, AddressOf CirMod             '\u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e             acTrans.Commit()         End Using     End Sub      Public Sub DrawLebel()         If textID.IsNull Then             Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()                 Dim acBlkTbl As BlockTable                 acBlkTbl = acTrans.GetObject(OID.Database.BlockTableId, OpenMode.ForRead)                 Dim acBlkTblRec As BlockTableRecord                 acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite)                 Dim acText As New DBText()                 acText.SetDatabaseDefaults()                 acText.Position = Me.fCenter                 acText.Height = 2                 acText.TextString = Me.fRadius                 textID = acBlkTblRec.AppendEntity(acText)                 acTrans.AddNewlyCreatedDBObject(acText, True)                 acTrans.Commit()             End Using         End If     End Sub      Public Sub EraseLebel()         If Not textID.IsNull Then             Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()                 Dim wDBObj As DBText = textID.GetObject(OpenMode.ForWrite)                 wDBObj.Erase()                 wDBObj.UpgradeOpen()                 acTrans.Commit()             End Using         End If     End Sub      Public Sub CirMod(ByVal senderObj As Object, ByVal evtArgs As EventArgs)             Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()                 Dim wDBObj As Circle = OID.GetObject(OpenMode.ForRead)                 Me.fCenter = wDBObj.Center                 Me.fRadius = wDBObj.Radius                 UpgradeLabel()                 acTrans.Commit()             End Using     End Sub      Private Function ParsePoint(wStr As String) As Point3d         wStr = wStr.Replace(&quot;(&quot;, &quot;&quot;)         wStr = wStr.Replace(&quot;)&quot;, &quot;&quot;)         Dim Arr() As String = wStr.Split(&quot;,&quot;)         Return New Point3d(Double.Parse(Arr(0)), Double.Parse(Arr(1)), Double.Parse(Arr(2)))     End Function      Public Property Center As Point3d         Get             Return Me.fCenter         End Get         Set(value As Point3d)             Me.fCenter = value             Me.UpgradeMe()         End Set     End Property      Public Sub Print(wEditor As Editor)         Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()             wEditor.WriteMessage(&quot;Handle: &quot; & OID.Handle.ToString & Environment.NewLine)             Dim wDBObj As Circle = OID.GetObject(OpenMode.ForRead)             wEditor.WriteMessage(&quot;Radius: &quot; & wDBObj.Radius & Environment.NewLine)             wEditor.WriteMessage(&quot;Center: &quot; & wDBObj.Center.ToString & Environment.NewLine)         End Using     End Sub      Public Function ToXML(wDoc As XmlDocument) As XmlElement         Dim res As XmlElement = wDoc.CreateElement(&quot;MyCircle&quot;)         Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()             res.SetAttribute(&quot;Handle&quot;, Me.OID.Handle.ToString)             Dim wDBObj As Circle = OID.GetObject(OpenMode.ForRead)             res.SetAttribute(&quot;Radius&quot;, wDBObj.Radius)             res.SetAttribute(&quot;Center&quot;, wDBObj.Center.ToString)         End Using         Return res     End Function  End Class <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u044f\u0441\u043d\u0435\u043d\u0438\u0439:<\/p>\n<pre><code>Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Geometry <\/code><\/pre>\n<p>  \u041d\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c cmgd.dll, acdbmgd.dll, accoremgd.dll (AcAd &gt;= 2013)?<\/p>\n<pre><code class=\"vbscript\">    Private fCenter As Point3d     Private fRadius As Double <\/code><\/pre>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0434\u0430 \u044d\u0442\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430, \u043d\u043e \u044d\u0442\u043e \u0436\u0435 \u043f\u0440\u0438\u043c\u0435\u0440.<\/p>\n<pre><code class=\"vbscript\">    Private OID As ObjectId '\u041a\u0440\u0443\u0433     Private textID As ObjectId '\u041c\u0435\u0442\u043a\u0430 <\/code><\/pre>\n<p>  \u0421\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0430.<\/p>\n<pre><code>    Public Sub DrawMe(db As Database)         Using acTrans As Transaction = db.TransactionManager.StartTransaction()             Dim cNewCircle As New Circle(Me.fCenter, New Vector3d(0, 0, 1), Me.fRadius)             '\u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0447\u0435\u0440\u0442\u0435\u0436\u0430 (\u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0438\u043b\u0438 \u043b\u0438\u0441\u0442)             Dim btrCurrSpace As BlockTableRecord = acTrans.GetObject(db.CurrentSpaceId, OpenMode.ForWrite)              '\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0448 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432             OID = btrCurrSpace.AppendEntity(cNewCircle)             acTrans.AddNewlyCreatedDBObject(cNewCircle, True)             AddHandler cNewCircle.Modified, AddressOf CirMod             '\u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e             acTrans.Commit()         End Using     End Sub <\/code><\/pre>\n<p>  \u0420\u0438\u0441\u0443\u0435\u043c \u0441\u0430\u043c \u043e\u0431\u044a\u0435\u043a\u0442, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u0438 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u0432\u0435\u0448\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<pre><code>    Public Sub CirMod(ByVal senderObj As Object, ByVal evtArgs As EventArgs)             Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()                 'Dim acText As DBText = textID.GetObject(OpenMode.ForWrite)                 Dim wDBObj As Circle = OID.GetObject(OpenMode.ForRead)                 Me.fCenter = wDBObj.Center                 Me.fRadius = wDBObj.Radius                 UpgradeLabel()                 acTrans.Commit()             End Using     End Sub <\/code><\/pre>\n<p>  \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u2014 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043e\u0431\u043d\u0430\u0432\u043b\u044f\u0435\u043c \u041c\u0435\u0442\u043a\u0443.<\/p>\n<pre><code>    Public Sub DrawLebel()         If textID.IsNull Then             Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()                 Dim acBlkTbl As BlockTable                 acBlkTbl = acTrans.GetObject(OID.Database.BlockTableId, OpenMode.ForRead)                 Dim acBlkTblRec As BlockTableRecord                 acBlkTblRec = acTrans.GetObject(acBlkTbl(BlockTableRecord.ModelSpace), OpenMode.ForWrite)                 Dim acText As New DBText()                 acText.SetDatabaseDefaults()                 acText.Position = Me.fCenter                 acText.Height = 2                 acText.TextString = Me.fRadius                 textID = acBlkTblRec.AppendEntity(acText)                 acTrans.AddNewlyCreatedDBObject(acText, True)                 acTrans.Commit()             End Using         End If     End Sub <\/code><\/pre>\n<p>  \u0420\u0438\u0441\u0443\u0435\u043c \u041c\u0435\u0442\u043a\u0443 \u043e\u0431\u044a\u0435\u043a\u0442\u0430.<\/p>\n<pre><code>    Public Sub New(MyCircleData As XmlElement, db As Database)         Dim wHandle As New Handle(Long.Parse(MyCircleData.GetAttribute(&quot;Handle&quot;), Globalization.NumberStyles.HexNumber))         OID = New ObjectId         Me.fCenter = Me.ParsePoint(MyCircleData.GetAttribute(&quot;Center&quot;))         Me.fRadius = MyCircleData.GetAttribute(&quot;Radius&quot;)         If db.TryGetObjectId(wHandle, OID) Then             Me.UpgradeMe()         Else             Me.DrawMe(db)         End If         Me.DrawLebel()     End Sub      Public Function ToXML(wDoc As XmlDocument) As XmlElement         Dim res As XmlElement = wDoc.CreateElement(&quot;MyCircle&quot;)         Using acTrans As Transaction = OID.Database.TransactionManager.StartTransaction()             res.SetAttribute(&quot;Handle&quot;, Me.OID.Handle.ToString)             Dim wDBObj As Circle = OID.GetObject(OpenMode.ForRead)             res.SetAttribute(&quot;Radius&quot;, wDBObj.Radius)             res.SetAttribute(&quot;Center&quot;, wDBObj.Center.ToString)         End Using         Return res     End Function <\/code><\/pre>\n<p>  \u0418\u043c\u043f\u043e\u0440\u0442\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 XML.<\/p>\n<p>  \u041d\u0443 \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 AutoCAD&#8217;\u0435, \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043d\u0430\u0448\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u043b\u0430\u0441\u0441 \u043a\u043e\u043c\u0430\u043d\u0434<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code>Imports Autodesk.AutoCAD.Runtime Imports AppServ = Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.DatabaseServices Imports Autodesk.AutoCAD.EditorInput Imports Autodesk.AutoCAD.Geometry  Imports System.Windows.Forms Imports System.Xml  Public Class CommandClass     Dim wList As List(Of MyCircle) = Nothing      &lt;CommandMethod(&quot;CrMyCircle&quot;)&gt; _     Public Sub CrMyCircle()         If wList Is Nothing Then wList = New List(Of MyCircle)         Dim acDoc As AppServ.Document = AppServ.Application.DocumentManager.MdiActiveDocument         Dim acCurDb As Database = acDoc.Database         Dim pPtRes As PromptPointResult = acDoc.Editor.GetPoint(&quot;\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0446\u0435\u043d\u0442\u0440: &quot;)         If (pPtRes.Status = PromptStatus.OK) Then             Dim wPrmtDistOpt As New PromptDistanceOptions(&quot;\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0434\u0438\u0443\u0441: &quot;)             wPrmtDistOpt.BasePoint = pPtRes.Value             wPrmtDistOpt.UseBasePoint = True             Dim pDistRes As PromptDoubleResult = acDoc.Editor.GetDistance(wPrmtDistOpt)             If (pDistRes.Status = PromptStatus.OK) Then                 wList.Add(New MyCircle(pPtRes.Value, pDistRes.Value, acCurDb))             End If         End If     End Sub      &lt;CommandMethod(&quot;SaveToXML&quot;)&gt; _     Public Sub SaveToXML()         Dim nDialog As New SaveFileDialog         nDialog.Filter = &quot;XML|*.xml&quot;         Dim wDoc As New XmlDocument         wDoc.LoadXml(&quot;&lt;?xml version=&quot;&quot;1.0&quot;&quot; encoding=&quot;&quot;utf-8&quot;&quot;?&gt;&lt;MyCircleList\/&gt;&quot;)         If wList IsNot Nothing Then wList.ForEach(Sub(obj) wDoc.DocumentElement.AppendChild(obj.ToXML(wDoc)))         If nDialog.ShowDialog = DialogResult.OK Then             wDoc.Save(nDialog.FileName)         End If     End Sub      &lt;CommandMethod(&quot;LoadFromXML&quot;)&gt; _     Public Sub LoadFromXML()         Dim nDialog As New OpenFileDialog         nDialog.Filter = &quot;XML|*.xml&quot;         Dim wDoc As New XmlDocument         Dim done As Boolean = False         If nDialog.ShowDialog = DialogResult.OK Then             wDoc.Load(nDialog.FileName)             done = True         End If         If done Then             If wList Is Nothing Then wList = New List(Of MyCircle)             Dim acDoc As AppServ.Document = AppServ.Application.DocumentManager.MdiActiveDocument             Dim acCurDb As Database = acDoc.Database             For Each ch In wDoc.DocumentElement.ChildNodes                 wList.Add(New MyCircle(ch, acCurDb))             Next         End If     End Sub      &lt;CommandMethod(&quot;DrawLabel&quot;)&gt; _     Public Sub DrawLabel()         If wList IsNot Nothing Then wList.ForEach(Sub(obj) obj.DrawLebel())     End Sub      &lt;CommandMethod(&quot;EraseLabel&quot;)&gt; _     Public Sub EraseLabel()         If wList IsNot Nothing Then wList.ForEach(Sub(obj) obj.EraseLebel())     End Sub  End Class <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<pre><code>    &lt;CommandMethod(&quot;CrMyCircle&quot;)&gt; _     Public Sub CrMyCircle()         If wList Is Nothing Then wList = New List(Of MyCircle)         Dim acDoc As AppServ.Document = AppServ.Application.DocumentManager.MdiActiveDocument         Dim acCurDb As Database = acDoc.Database         Dim pPtRes As PromptPointResult = acDoc.Editor.GetPoint(&quot;\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0446\u0435\u043d\u0442\u0440: &quot;)         If (pPtRes.Status = PromptStatus.OK) Then             Dim wPrmtDistOpt As New PromptDistanceOptions(&quot;\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u0440\u0430\u0434\u0438\u0443\u0441: &quot;)             wPrmtDistOpt.BasePoint = pPtRes.Value             wPrmtDistOpt.UseBasePoint = True             Dim pDistRes As PromptDoubleResult = acDoc.Editor.GetDistance(wPrmtDistOpt)             If (pDistRes.Status = PromptStatus.OK) Then                 wList.Add(New MyCircle(pPtRes.Value, pDistRes.Value, acCurDb))             End If         End If     End Sub <\/code><\/pre>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 CrMyCircle \u0440\u0438\u0441\u0443\u0435\u0442 \u043d\u0430\u0448\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u044b.<\/p>\n<pre><code>    &lt;CommandMethod(&quot;SaveToXML&quot;)&gt; _     Public Sub SaveToXML()         Dim nDialog As New SaveFileDialog         nDialog.Filter = &quot;XML|*.xml&quot;         Dim wDoc As New XmlDocument         wDoc.LoadXml(&quot;&lt;?xml version=&quot;&quot;1.0&quot;&quot; encoding=&quot;&quot;utf-8&quot;&quot;?&gt;&lt;MyCircleList\/&gt;&quot;)         If wList IsNot Nothing Then wList.ForEach(Sub(obj) wDoc.DocumentElement.AppendChild(obj.ToXML(wDoc)))         If nDialog.ShowDialog = DialogResult.OK Then             wDoc.Save(nDialog.FileName)         End If     End Sub <\/code><\/pre>\n<p>  \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0432 XML.<\/p>\n<pre><code>    &lt;CommandMethod(&quot;LoadFromXML&quot;)&gt; _     Public Sub LoadFromXML()         Dim nDialog As New OpenFileDialog         nDialog.Filter = &quot;XML|*.xml&quot;         Dim wDoc As New XmlDocument         Dim done As Boolean = False         If nDialog.ShowDialog = DialogResult.OK Then             wDoc.Load(nDialog.FileName)             done = True         End If         If done Then             If wList Is Nothing Then wList = New List(Of MyCircle)             Dim acDoc As AppServ.Document = AppServ.Application.DocumentManager.MdiActiveDocument             Dim acCurDb As Database = acDoc.Database             For Each ch In wDoc.DocumentElement.ChildNodes                 wList.Add(New MyCircle(ch, acCurDb))             Next         End If     End Sub <\/code><\/pre>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0438\u0437 XML.<\/p>\n<h5>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h5>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u0438 \u043d\u0435 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0451\u043d\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u044b\u0439 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u0437 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430 (XML). \u0415\u0433\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u044f \u0441 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0411\u0414.       <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/271109\/\"> http:\/\/habrahabr.ru\/post\/271109\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u0427\u0430\u0441\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u0445\u043e\u0442\u044f\u0442 \u0441\u0432\u044f\u0437\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u2013 \u0422\u0430\u0431\u043b\u0438\u0446\u0435\u0439 Excel, \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0438\u043b\u0438 xml \u0444\u0430\u0439\u043b\u043e\u043c. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0432 AutoCAD \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438: _DataLink, dbConnect, attin, _script. \u041d\u043e \u0432\u0441\u0435 \u044d\u0442\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u00ab\u043c\u043d\u043e\u0433\u043e \u043a\u043b\u0438\u043a\u043e\u0432\u00bb \u0438 \u043d\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u044e\u0442 \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0431\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0447\u0435\u0440\u0442\u0435\u0436\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u043b\u0438\u0441\u044c \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435 \u0441 \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438, \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0435\u0433\u043e \u0443\u0447\u0430\u0441\u0442\u0438\u0435\u043c. \u041e\u0431\u0440\u0430\u0437\u0446\u043e\u0432\u044b\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f FDO \u0432 AutoCAD Map 3D \u2013 \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0443 \u043c\u044b \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 (\u0438 \u043f\u0440\u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u0438 \u0434\u0430\u0436\u0435 \u0441 \u043f\u043e\u0434\u043f\u0438\u0441\u044f\u043c\u0438) \u0438 \u0434\u043b\u044f \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u043c, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u044f (\u043e\u0434\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0430). \u041d\u043e \u044d\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 (\u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0439) \u0413\u0418\u0421 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043d\u0435 \u0432\u0441\u0435\u043c. \u0418 \u0442\u043e\u0433\u0434\u0430 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0431\u043b\u0430\u0433\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2013 Lisp, C++, .Net, Delphi, Python \u0438 \u0442. \u0434.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-268429","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/268429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=268429"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/268429\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=268429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=268429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=268429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}