Fatal error

Автор Тема: Fatal error  (Прочитано 8959 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн JudasАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 78
  • Карма: 0
Fatal error
« : 24-04-2019, 19:02:39 »
При выполнении сборки отрисовка приходит, все кончается вылетом
Вызов:
Код - C# [Выбрать]
  1. //создание плана схемы
  2.         [CommandMethod("CreateSchem", CommandFlags.UsePickSet)]
  3.         public void CreateSchem()
  4.         {
  5.  
  6.             //экземпляр формы для работы
  7.             DataFromExcelForm dataFromExcelForm = new DataFromExcelForm();
  8.             //Открываем форму для исходных данных для расстановки знаков
  9.             dataFromExcelForm.ShowDialog();
  10.             //получаем ссылкe на документ
  11.             Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  12.             if (AcadDoc == null) return;
  13.             //получаем ссылкe на БД
  14.             Database db = AcadDoc.Database;
  15.             //запускаем транзакцию
  16.             Transaction tr = db.TransactionManager.StartTransaction();
  17.  
  18.             if (dataFromExcelForm.ButtonWasClicked == true)
  19.             {
  20.                 //путь к фалу данных по схеме
  21.                 string pathToFile = dataFromExcelForm.TextBoxText(1);
  22.                 double ScaleSchemFromForm = Convert.ToDouble(dataFromExcelForm.TextBoxText(2));
  23.                 //Считываем данные с файла эксель
  24.                 List<ElementScheme> LocalElementList = ListElementScheme(pathToFile);
  25.                 double dist = ScaleSchem / ScaleSchemFromForm * (LocalElementList.Last().KM - LocalElementList.First().KM);
  26.                 double PX = ScaleSchem / ScaleSchemFromForm * LocalElementList.First().KM;
  27.                 double PY = 0;
  28.                 double PZ = 0;
  29.                 CreatePlanElementSchem(PX, PY, PZ, dist, db, tr);
  30.                 //Рисуем коммуникации - перебор всех элементов списка пересечек
  31.                 /*foreach (ElementScheme elementScheme in LocalElementList)
  32.                 {
  33.                     PX = ScaleSchem * elementScheme.KM;
  34.                     PY = 0;
  35.                     PZ = 0;
  36.                     string typeBurden = elementScheme.TypeBurden;
  37.                     string nameBurden = elementScheme.NameBurden;
  38.                     string pk = elementScheme.PK;
  39.                     if (IfExistBlock(typeBurden) == false)
  40.                     {
  41.                         CreateBlockElementSchem(PX, PY, PZ, typeBurden, db, tr);
  42.                     }
  43.                     else
  44.                     {
  45.                         CreateBlockElementSchemIfExist(PX, PY, PZ, typeBurden, db, tr);
  46.                     }
  47.                     CreateOrdinate(PX, PY, PZ, "ПК" + pk + " " + typeBurden + ": " + nameBurden, db, tr);
  48.                 }*/
  49.             }
  50.  
  51.         }

Отрисовка:

Код - C# [Выбрать]
  1.  public void CreatePlanElementSchem(double _PX, double _PY, double _PZ, double _dist, Database _db, Transaction _tr)
  2.         {
  3.             //ссылка на список слоем схемы
  4.             ElementLayer eLayer = new ElementLayer();
  5.             //начинаем транзакцию
  6.             using (_tr)
  7.             {
  8.                 //открываем таблицу блоков на запись
  9.                 BlockTable blocktable = _tr.GetObject(_db.BlockTableId, OpenMode.ForWrite) as BlockTable;
  10.                 //создаем новое определение блока, задаем ему имя
  11.                 BlockTableRecord blocktabletecord = _tr.GetObject(blocktable[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
  12.                 //Запоминание текущего слоя для возврата к нему
  13.                 string CurrentLayer = eLayer.CurrentLayerData();
  14.                 //Подготавливаем слои
  15.                 eLayer.PreparationLayer();
  16.                 //Слой знаков
  17.                 eLayer.ActiveLayerSetup(eLayer.LayerMN);
  18.                 //Смещение волнистой линии
  19.                 double ds = 20;
  20.                 //Создаем полилинию трассы
  21.                 Polyline poly = new Polyline();
  22.                 poly.AddVertexAt(0, new Point2d(_PX, _PY), 0, 0, 0);
  23.                 poly.AddVertexAt(0, new Point2d(_PX + _dist, _PY), 0, 0, 0);
  24.                 poly.ConstantWidth = WidthPoly;
  25.                 blocktabletecord.AppendEntity(poly);
  26.                 _tr.AddNewlyCreatedDBObject(poly, true);
  27.  
  28.                 poly = new Polyline();
  29.                 poly.AddVertexAt(0, new Point2d(_PX, _PY), 0, 0, 0);
  30.                 poly.AddVertexAt(0, new Point2d(_PX - ds, _PY), 0, 0, 0);
  31.                 poly.ConstantWidth = WidthPolyExist;
  32.                 blocktabletecord.AppendEntity(poly);
  33.                 _tr.AddNewlyCreatedDBObject(poly, true);
  34.  
  35.                 poly = new Polyline();
  36.                 poly.AddVertexAt(0, new Point2d(_PX + _dist, _PY), 0, 0, 0);
  37.                 poly.AddVertexAt(0, new Point2d(_PX + ds + _dist, _PY), 0, 0, 0);
  38.                 poly.ConstantWidth = WidthPolyExist;
  39.                 blocktabletecord.AppendEntity(poly);
  40.                 _tr.AddNewlyCreatedDBObject(poly, true);
  41.  
  42.                 Polyline poly01 = new Polyline();
  43.                 poly01.AddVertexAt(0, new Point2d(_PX - ds, _PY - 2.0 * BaseHeigth), 0, 0, 0);
  44.                 poly01.AddVertexAt(1, new Point2d(_PX - ds - 1.0 * BaseHeigth, _PY - 1.0 * BaseHeigth), 0, 0, 0);
  45.                 poly01.AddVertexAt(2, new Point2d(_PX - ds + 1.0 * BaseHeigth, _PY + 1.0 * BaseHeigth), 0, 0, 0);
  46.                 poly01.AddVertexAt(3, new Point2d(_PX - ds, _PY + 2.0 * BaseHeigth), 0, 0, 0);
  47.                 poly01.ConstantWidth = 0.3;
  48.                 blocktabletecord.AppendEntity(poly01);
  49.                 _tr.AddNewlyCreatedDBObject(poly01, false);
  50.                 Polyline2d poly2d01 = poly01.ConvertTo(true);
  51.                 poly2d01.ConvertToPolyType(Poly2dType.QuadSplinePoly);
  52.  
  53.                 Polyline poly02 = new Polyline();
  54.                 poly02.AddVertexAt(0, new Point2d(_PX + ds + _dist, _PY - 2.0 * BaseHeigth), 0, 0, 0);
  55.                 poly02.AddVertexAt(1, new Point2d(_PX + ds + _dist - 1.0 * BaseHeigth, _PY - 1.0 * BaseHeigth), 0, 0, 0);
  56.                 poly02.AddVertexAt(2, new Point2d(_PX + ds + _dist + 1.0 * BaseHeigth, _PY + 1.0 * BaseHeigth), 0, 0, 0);
  57.                 poly02.AddVertexAt(3, new Point2d(_PX + ds + _dist, _PY + 2.0 * BaseHeigth), 0, 0, 0);
  58.                 poly02.ConstantWidth = 0.3;
  59.                 blocktabletecord.AppendEntity(poly02);
  60.                 _tr.AddNewlyCreatedDBObject(poly02, false);
  61.                 Polyline2d poly2d02 = poly02.ConvertTo(true);
  62.                 poly2d02.ConvertToPolyType(Poly2dType.QuadSplinePoly);
  63.  
  64.                 //Востанавливаем предыдущий текущий слой
  65.                 eLayer.ActiveLayerSetup(CurrentLayer);
  66.                 //Заказчиваю транзакцию
  67.                 _tr.Commit();
  68.             }
  69.         }
  70.  

Ошибка:
<?xml version="1.0" encoding="UTF-8"?>
<CERInfo ClientVersion="4">
<ProcessInfo
  AvailPhysicalMem="28AEB6000"
  AvailPageFile="319B91000"
  AvailVirtualMem="7FFE8C1A2000"
/>
<UserInfo UserCanBeContacted="no" SerialNum="111-11111111">
  <UserName value =""/>
  <UserPhone value=""/>
  <UserEmail value=""/>
  <UserSubscription macID="{61100011-6a98-4808-9e9d-4c0cd7feadc6}" userId=""/>
  <ErrorDescription id="26" CrashDate="24.04.2019" CrashID="{BF7B676A-12F7-48C8-8FBA-FAAC9F6CEE24}" AllowRT="1"></ErrorDescription>
  <Metrics CalendarUptime="671647087872" RequiredSend="0" WaitDur="10000" />  <WorkingDocument name="Чертеж1.dwg"/>
</UserInfo>
<upipackage><upivalue version="1.0" type="product" requestingapp="true"><level name="productline" id="ACD"><level name="release" id="2017"><level name="master" id="{28B89EEF-0001-0419-2102-CF3F3A09B77D}"><level name="build" id="21.0.301.0.0"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="ADSKAPP"><level name="release" id="6.0"><level name="master" id="ADSKAPP_WIN32"><level name="build" id="7.0.12.84"/></level></level></level></upivalue>
<upi_error>Error loading C:\Program Files (x86)\Common Files\Autodesk Shared\Materials\Textures\UPI2017Base\UPI\upiconfig.xml</upi_error><upi_error>Error loading C:\Program Files (x86)\Common Files\Autodesk Shared\Materials\Textures\UPI2017AILBase\UPI\upiconfig.xml</upi_error><upivalue version="1.0" type="product"><level name="productline" id="PLC0000036"><level name="release" id="3"><level name="master" id="WIN64"><level name="build" id="7.1.4.0"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="RVT"><level name="release" id="2019"><level name="master" id="MUI64"><level name="build" id="19.1.0.112"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="PLC0000022"><level name="release" id="2019"><level name="master" id="MUI64"><level name="build" id="19.1.0.112"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="ACD"><level name="release" id="2017"><level name="master" id="{28B89EEF-0001-0000-0102-CF3F3A09B77D}"><level name="build" id="21.0.301.0.0"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="ACD"><level name="release" id="2017"><level name="master" id="{28B89EEF-0001-0419-1102-CF3F3A09B77D}"><level name="build" id="21.0.212.0.0"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="ARCHDESK"><level name="release" id="2017"><level name="master" id="{28B89EEF-0004-0000-5102-CF3F3A09B77D}"><level name="build" id="7.9.45.0"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="PLC0000036"><level name="release" id="3"><level name="master" id="WIN64"><level name="build" id="3.1.26.0"/></level></level></level></upivalue>
<upivalue version="1.0" type="product"><level name="productline" id="PLC0000036"><level name="release" id="3"><level name="master" id="WIN64"><level name="build" id="3.1.26.0"/></level></level></level></upivalue>
<upi_error>Error loading C:\Program Files\Autodesk\AutoCAD 2017 Help\Russian\x64\UPI\upiconfig.xml</upi_error></upipackage><OSInfo  MajorVersion = "6" MinorVersion = "2" BuildNumber = "9200" PlatformId = "2" CSDVersion = "" ServicePackMajor = "0" ServicePackMinor = "0" SuiteFlags = "100" KernelMajorVersion = "10" KernelMinorVersion = "0" KernelBuildNum = "17763" KernelReleaseNum = "470"/>
<LocaleInfo> <LocalUserDefault IDefaultAnsiCodepage="1251"  IDefaultCodepage="866"  IDefaultLanguage="0419"  IDefaultCountry="7"  ILanguage="0419"  ICountry="7" />
 <LocalSystemDefault IDefaultAnsiCodepage="1251"  IDefaultCodepage="866"  IDefaultLanguage="0419"  IDefaultCountry="7"  ILanguage="0419"  ICountry="7" />
</LocaleInfo>
<WininetInfo  WininetMajorVersion = "11" WininetMinorVersion = "00" WininetBuildNum = "17763" WininetReleaseNum = "470"/>
<MC3Info sessionId="{59a52fc1-c5db-42c9-a3f6-8fd0e4254f63}" userId="85F4D854EDEE12161068B3079ED8372DF6D8AFE0072FDC131C3AA29A174D6274_FFE2B3020C69B99C19C1E0153D9F14EFB72F65BA91D71525FC672CF2B272F57E_DCE77C37F139AE40416254640795ED65868490CACCB8DDE3B1D136F15A6CA7B4" />
<ProductInformation name ="AutoCAD" build_version="N.301.0.0(x64)" registry_version="21.0" install_id_string="ACAD-0001:419" registry_localeID="1049" uptime="103495937500" session_start_count="147" session_clean_close_count="127" current_session_length="93"><GsConfig version="1.0" certification="Dx11"><Card name="Intel(R) Iris(R) Pro Graphics 580" driver="25.20.100.6373"/><VirtualDevice><Current>"Dx11"</Current></VirtualDevice><Settings><HWFeatureLevel>"50"</HWFeatureLevel><SWFeatureLevel>"50"</SWFeatureLevel><HWAccelerationAvailable>"1"</HWAccelerationAvailable><HWAccelerationEnabled>"1"</HWAccelerationEnabled><HWAccelerationRecommended>"0"</HWAccelerationRecommended></Settings><Effects><Effect name="ACAD_LineSmoothing" enabled="1" available="1" recommended="1"/><Effect name="ACAD_PerPixelLighting" enabled="1" available="1" recommended="1"/><Effect name="ACAD_AdvancedMaterial" enabled="1" available="1" recommended="1"/><Effect name="ACAD_FullShadows" enabled="1" available="1" recommended="1"/><Effect name="ACAD_TextureCompression" enabled="0" available="1" recommended="1"/><Effect name="ACAD_HQGeom" enabled="1" available="1" recommended="1"/><Effect name="ACAD_GlowHighlighting" enabled="1" available="1" recommended="1"/><Effect name="ACAD_Dx11" enabled="1" available="1" recommended="1"/></Effects><GDI><GDIOBJECTS>523</GDIOBJECTS><USEROBJECTS>426</USEROBJECTS><GDIOBJECTSPEAK>640</GDIOBJECTSPEAK><USEROBJECTSPEAK>500</USEROBJECTSPEAK></GDI></GsConfig></ProductInformation><AppCDATA><![CDATA[Command: CREATESCHEM;��������������� � �����������;Createschem;Netload;������ ������
Clr Data:
-----Current Stack:
   � AcDbObject.close(AcDbObject* )

   � AcDbObject.close(AcDbObject* )

   � Autodesk.AutoCAD.DatabaseServices.DBObject.DeleteUnmanagedObject()

   � Autodesk.AutoCAD.Runtime.DisposableWrapper.!DisposableWrapper()

   � Autodesk.AutoCAD.Runtime.DisposableWrapper.Dispose(Boolean A_0)

   � Autodesk.AutoCAD.DatabaseServices.DBObject.Dispose(Boolean A_0)


-----Last Unhandled Exception:

-----Last 3 'first chance' exceptions (may not be related to the crash if they were handled):
-----Last-0 'first chance' exception:
System.ArgumentException: ���������� Win32, ���������� Icon, �������� ������������ ���� ��������� ����.

   � System.Drawing.Icon..ctor(IntPtr handle, Boolean takeOwnership)
-----Last-1 'first chance' exception:
System.ArgumentException: ���������� Win32, ���������� Icon, �������� ������������ ���� ��������� ����.

   � System.Drawing.Icon..ctor(IntPtr handle, Boolean takeOwnership)
-----Last-2 'first chance' exception:
Autodesk.AutoCAD.Runtime.Exception: eInvalidInput

   � Autodesk.AutoCAD.ApplicationServices.Core.Application.GetSystemVariable(String name)

GDI_Objects:523 User_Objects:426 Process_Handles:1716]]></AppCDATA>
<OpenGLInfo Vendor = "Intel" Renderer = "Intel(R) Iris(R) Pro Graphics 580" Version = "4.5.0 - Build 25.20.100.6373" />
<GraphicsDriverInfo Driver = "acaddm13.hdi" />
<GraphicsInfo InfoType="D3D9Config"><![CDATA[
Driver: igdumdim64.dll
DriverVersion: 25.20.100.6373
Description: Intel(R) Iris(R) Pro Graphics 580
DeviceName: \\.\DISPLAY1
VendorId: 32902
DeviceId: 6459
SubSysId: 543457414
Revision: 9
WHQLLevel: 0
DeviceType: 1
AdapterOrdinal: 0
Caps: 131072
Caps2: 3758227456
Caps3: 800
Presentation: 2147483663
Cursor: 1
Dev: 1683024
PrimitiveMisc: 3132658
Raster: 259219857
ZCmp: 255
SrcBlend: 16383
DestBlend: 10239
AlphaCmp: 255
Shade: 541192
Texture: 2223173
TextureFilter: 117638912
CubeTextureFilter: 117638912
VolumeTextureFilter: 117638912
TextureAddress: 63
VolumeTextureAddress: 63
Line: 31
MaxTextureWidth: 8192
MaxTextureHeight: 8192
MaxVolumeExtent: 2048
MaxTextureRepeat: 8192
MaxTextureAspectRatio: 8192
MaxAnisotropy: 16
MaxVertexW: 1e+10
GuardBandLeft: -32768
GuardBandTop: -32768
GuardBandRight: 32768
GuardBandBottom: 32768
ExtentsAdjust: 0
Stencil: 511
FVF: 1572872
TextureOp: 67108863
MaxTextureBlendStages: 8
MaxSimultaneousTextures: 8
VertexProcessing: 379
MaxActiveLights: 8
MaxUserClipPlanes: 6
MaxVertexBlendMatrices: 4
MaxVertexBlendMatrixIndex: 0
MaxPointSize: 256
MaxPrimitiveCount: 8388607
MaxVertexIndex: 16777215
MaxStreams: 16
MaxStreamStride: 255
VertexShaderVersion: 4294836992
MaxVertexShaderConst: 256
PixelShaderVersion: 4294902528
PixelShader1xMaxValue: 3.40282e+38
Dev2: 81
MasterAdapterOrdinal: 0
AdapterOrdinalInGroup: 0
NumberOfAdaptersInGroup: 2
DeclTypes: 895
NumSimultaneousRTs: 4
StretchRectFilter: 50332416
VertexTextureFilter: 50529024
MaxVShaderInstructionsExecuted: 4294967295
MaxPShaderInstructionsExecuted: 4294967295
MaxVertexShader30InstructionSlots: 32768
MaxPixelShader30InstructionSlots: 32768
]]></GraphicsInfo>
<DxDiagInfo><SystemInformation><OperatingSystem><![CDATA[64-bit Windows 10 Pro 64-bit (6.2, Build 9200) (17763.rs5_release.180914-1434)]]></OperatingSystem><Language><![CDATA[Russian (Regional Setting: Russian)]]></Language><SystemManufacturer><![CDATA[                                 ]]></SystemManufacturer><SystemModel><![CDATA[                                 ]]></SystemModel><BIOS><![CDATA[KYSKLi70.86A.0041.2016.0817.1130]]></BIOS><Processor><![CDATA[Intel(R) Core(TM) i7-6770HQ CPU @ 2.60GHz (8 CPUs), ~2.6GHz]]></Processor><SystemMemory><![CDATA[16384MB RAM]]></SystemMemory><PageFile><![CDATA[5406MB used, 13298MB available]]></PageFile><FullDirectXVersion><![CDATA[DirectX 12]]></FullDirectXVersion><DxDiagVersion><![CDATA[6.02.17763.0001]]></DxDiagVersion></SystemInformation><GraphicsDeviceInfo><DirectXVersion><![CDATA[12.0]]></DirectXVersion><DDIVersion><![CDATA[12]]></DDIVersion><DDIVersionNumber><![CDATA[c]]></DDIVersionNumber><DxDiagWHQLLevel><![CDATA[0]]></DxDiagWHQLLevel><DriverSignedValid><![CDATA[True]]></DriverSignedValid><DriverSigned><![CDATA[True]]></DriverSigned><Manufacturer><![CDATA[Intel Corporation]]></Manufacturer><ChipType><![CDATA[Intel(R) Iris(R) Graphics Family]]></ChipType><DACType><![CDATA[Internal]]></DACType><GraphicsHWMemory><![CDATA[8264 MB]]></GraphicsHWMemory><DisplayMode><![CDATA[1920 x 1080 (32 bit) (59Hz)]]></DisplayMode><VendorID><![CDATA[0x8086]]></VendorID><DeviceID><![CDATA[0x193B]]></DeviceID><SubSystemID><![CDATA[0x20648086]]></SubSystemID><RevisionID><![CDATA[0x0009]]></RevisionID><GraphicsDriverFile><![CDATA[C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_24de78387e6208e4\igdumdim64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_24de78387e6208e4\igd10iumd64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_24de78387e6208e4\igd10iumd64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\igdlh64.inf_amd64_24de78387e6208e4\igd12umd64.dll]]></GraphicsDriverFile><DriverFileVersion><![CDATA[25.20.0100.6373]]></DriverFileVersion><DriverDate><![CDATA[18.11.2018 6:00:00]]></DriverDate><WHQLLevel><![CDATA[1]]></WHQLLevel></GraphicsDeviceInfo></DxDiagInfo><VideoDriverInfo><ATIPackagingVersion><![CDATA[No value found]]></ATIPackagingVersion></VideoDriverInfo>
</CERInfo>

Что не так?
« Последнее редактирование: 24-04-2019, 19:18:22 от Александр Ривилис »

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Fatal error
« Ответ #1 : 24-04-2019, 19:10:56 »
Ну видимо в файле неверные данные, которые в коде никак не проверяются - что очень зря!
А вот открыть транзакцию в одном методе, а закрыть в другом - это очень плохая идея

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Fatal error
« Ответ #2 : 24-04-2019, 19:17:26 »
Judas,
1. У тебя куча своего кода, который ты не опубликовал (и не нужно публиковать - никто в нём копаться не будет) и в котором могут быть ошибки.
2. Посмотри внимательно что за дамп ошибки ты выложил и подумай следовали ли его выкладывать здесь.
3. Пользуйся отладчиком, локализуй и исправляй ошибки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн JudasАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 78
  • Карма: 0
Re: Fatal error
« Ответ #3 : 24-04-2019, 20:04:51 »
Александр!
Я просто инженер - проектировщик) - хотя это не оправдание.
Но по сути с отладкой как работать помоги дайте ссылку на источники (сейчас тест - только через автокад).
Локализовался и на итог работает, но ошибка закралась тут
Код - C# [Выбрать]
  1. /*
  2.                 Polyline poly01 = new Polyline();
  3.                 poly01.AddVertexAt(0, new Point2d(_PX - ds, _PY - 2.0 * BaseHeigth), 0, 0, 0);
  4.                 poly01.AddVertexAt(1, new Point2d(_PX - ds - 1.0 * BaseHeigth, _PY - 1.0 * BaseHeigth), 0, 0, 0);
  5.                 poly01.AddVertexAt(2, new Point2d(_PX - ds + 1.0 * BaseHeigth, _PY + 1.0 * BaseHeigth), 0, 0, 0);
  6.                 poly01.AddVertexAt(3, new Point2d(_PX - ds, _PY + 2.0 * BaseHeigth), 0, 0, 0);
  7.                 poly01.ConstantWidth = 0.3;
  8.                 blocktabletecord.AppendEntity(poly01);
  9.                 tr.AddNewlyCreatedDBObject(poly01, false);
  10. [b]            Polyline2d poly2d01 = poly01.ConvertTo(true);
  11.                 poly2d01.ConvertToPolyType(Poly2dType.QuadSplinePoly);[/b]
  12.  
  13.  
  14.  

Александр Пекшев.
Проверка пока не нужна, она настроена в исходном файле - обычным списочным листком, потом наверное буду добавлять ее в внутрь.
Транзакции разделил.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Fatal error
« Ответ #4 : 24-04-2019, 20:07:33 »
но ошибка закралась тут
Тут - это где???
1. Почему здесь false:
Код - C# [Выбрать]
  1. tr.AddNewlyCreatedDBObject(poly01, false);
2. Я вижу конвертацию между типами полилиний, но не вижу чтобы итоговая полилиния добавлялась в базу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Judas 25-04-2019, 19:48:27

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Fatal error
« Ответ #5 : 24-04-2019, 20:20:00 »
Прочти внимательно статью: http://adn-cis.org/preobrazovanie-polyline-v-polyline2d.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Fatal error
« Ответ #6 : 25-04-2019, 08:38:11 »
Посмотри внимательно что за дамп ошибки ты выложил и подумай следовали ли его выкладывать здесь.
Сначала не понял, а присмотрелся.... да, не стоило это выкладывать =))) Тем более тут.

Если позволите, несколько общих замечаний по коду:
- Сначала выполните все проверки, подготовьте данные и только потом начинайте работать с автокадом. В Вашем коде, сначала открывается база чертежа, открывается транзакция и только потом проверяется, а нажал ли пользователь на кнопочку... а если не нажал, то и фиг с ней, с этой транзакцией, пускай в памяти болтается... По сути строки с 10 по 17 в методе CreateSchem не нужны и их нужно перенести в метод CreatePlanElementSchem...
- Относитесь к if как к функции/методу, которому в качестве параметра передаются true или false.  Как то так: x=true  if(x){}
- Для преобразования строки в число, у каждого типа чисел есть методы Parse() или безопасный TryParse() , зачем тут конверт не вполне понятно, есть в этом что то от VBA...
- Назначение слоя полилиниям выполнено очень оригинальным способом, я такое в первый раз вижу. Может лучше по старинке, просто свойство у полилиний менять?
- Назначение слоя без проверки его наличия или это в другом месте выполнено?
- Что бы так не мучатся с координатами, вспомните про вектора и посмотрите класс Vector2d или Vector3d
- Выкладывая код, не забывайте выкладывать и смежные классы, это я про ElementLayer в строке 4 отрисовки, или выкладывайте подготовленный проект из которого убрано все лишнее и по Вашему мнению, ценное, а осталась только ошибка.

ЗЫ.
Я просто инженер - проектировщик) - хотя это не оправдание.
Вот уж действительно не оправдание, я не сильно совру, если скажу, что тут половина таких.

Оффлайн JudasАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 78
  • Карма: 0
Re: Fatal error
« Ответ #7 : 25-04-2019, 19:47:00 »
БЛАГОДАРЮ за ЦУ!!
Цитировать
Сначала выполните все проверки, подготовьте данные и только потом начинайте работать с автокадом. В Вашем коде, сначала открывается база чертежа, открывается транзакция и только потом проверяется, а нажал ли пользователь на кнопочку... а если не нажал, то и фиг с ней, с этой транзакцией, пускай в памяти болтается... По сути строки с 10 по 17 в методе CreateSchem не нужны и их нужно перенести в метод CreatePlanElementSchem...
Данные проверяю в исходном файле (пока так делаю, дальше видно будет, пока наработаю код).
Ссылки на документ транзакции перенес в собственные методы.
Цитировать
Относитесь к if как к функции/методу, которому в качестве параметра передаются true или false.  Как то так: x=true  if(x){}
Не совсем понял для чего)!
Код - C# [Выбрать]
  1. bool localbool = dataFromExcelForm.ButtonWasClicked;
  2. if(true)
  3.  
Цитировать
Назначение слоя полилиниям выполнено очень оригинальным способом, я такое в первый раз вижу. Может лучше по старинке, просто свойство у полилиний менять?
Мне просто так удобнее, я кучу элементов потом создаю в методе по пересечениям - просто так короче.
Цитировать
- Назначение слоя без проверки его наличия или это в другом месте выполнено?
Да.

Код - C# [Выбрать]
  1. public class ElementLayer
  2.     {
  3.         private readonly string layerMN;
  4.         private readonly string layerScheme;
  5.         private readonly string layerSchemetext;
  6.         private readonly string TypeMainLayerWeigth;
  7.         private readonly string TypeOtherLayerWeigth;
  8.         private readonly string TypeLineWeight030;
  9.         private readonly byte ColorWhite;
  10.         private readonly byte ColorRed;
  11.         private readonly byte ColorYellow;
  12.         private readonly byte ColorGreen;
  13.         private readonly byte ColorWBlue;
  14.         private readonly byte ColorBlue;
  15.         private readonly byte ColorViolet;
  16.         public int lengthArraynamesign;
  17.         public ElementLayer()
  18.         {
  19.             //Имя слоев для блоков
  20.             layerMN = "МН_Трасса";
  21.             layerScheme = "МН_Трасса_Схема";
  22.             layerSchemetext = "МН_Трасса_Схема_Текст";
  23.             //Указатели на толщину линий
  24.             TypeMainLayerWeigth = "Main";
  25.             TypeOtherLayerWeigth = "Other";
  26.             TypeLineWeight030 = "0.3";
  27.             //Указатели на цвета
  28.             ColorWhite = 0;
  29.             ColorRed = 1;
  30.             ColorYellow = 2;
  31.             ColorGreen = 3;
  32.             ColorWBlue = 4;
  33.             ColorBlue = 5;
  34.             ColorViolet = 6;
  35.             //прочие значания
  36.             lengthArraynamesign = 75;
  37.         }
  38.  
  39.         public string LayerScheme
  40.         {
  41.             get { return layerScheme; }
  42.         }
  43.         public string LayerSchemeText
  44.         {
  45.             get { return layerSchemetext; }
  46.         }
  47.         public string LayerMN
  48.         {
  49.             get { return layerMN; }
  50.         }
  51.  
  52.         //Командный метод для подготовки слоев
  53.         public void PreparationLayer()
  54.         {
  55.             ElementLayer PreDataLayer = new ElementLayer();
  56.             if (PreDataLayer.IfExistLayer(PreDataLayer.LayerScheme) == true)
  57.             {
  58.                 CreateLayer(LayerScheme, PreDataLayer.ColorWhite, TypeLineWeight030, true);
  59.             }
  60.             if (PreDataLayer.IfExistLayer(PreDataLayer.LayerSchemeText) == true)
  61.             {
  62.                 CreateLayer(LayerSchemeText, PreDataLayer.ColorWhite, TypeOtherLayerWeigth, true);
  63.             }
  64.             if (PreDataLayer.IfExistLayer(PreDataLayer.LayerMN) == true)
  65.             {
  66.                 CreateLayer(LayerMN, PreDataLayer.ColorRed, TypeOtherLayerWeigth, false);
  67.             }
  68.         }
  69.         public void CreateLayer(string _LocalLayerName, short _LocalIndexColor, string _LocalMainLine, bool _plottable)
  70.         {
  71.             // получаем ссылку на документ
  72.             Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  73.             if (AcadDoc == null) return;
  74.             // получаем ссылку на БД
  75.             Database db = AcadDoc.Database;
  76.             // НАЧАЛОСЬ
  77.             using (Transaction transaction = AcadDoc.TransactionManager.StartTransaction())
  78.             {
  79.                 ObjectId LayerId;
  80.                 //получаем объект таблицы слоев
  81.                 LayerTable LocalLayerTable = transaction.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
  82.                 //Проверяем существует ли слой с таким именем
  83.                 if (LocalLayerTable.Has(_LocalLayerName))
  84.                 {
  85.                     MessageBox.Show("Слой с именем (" + _LocalLayerName + ") уже существует", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  86.                     return;
  87.                 }
  88.                 // создаем новый слой, задаем ему имя
  89.                 LayerTableRecord LocalLayerSign = new LayerTableRecord() { Name = _LocalLayerName };
  90.                 if (_plottable == true)
  91.                 {
  92.                     LocalLayerSign.IsPlottable = true;
  93.                 }
  94.                 else
  95.                 {
  96.                     LocalLayerSign.IsPlottable = false;
  97.                 }
  98.                 // задаем ему цвет
  99.                 Color acLocalColors = new Color();
  100.                 acLocalColors = Color.FromColorIndex(ColorMethod.ByColor, _LocalIndexColor);
  101.                 LocalLayerSign.Color = acLocalColors;
  102.                 if (_LocalMainLine == "Main")
  103.                 {
  104.                     LocalLayerSign.LineWeight = LineWeight.LineWeight050;
  105.                 }
  106.                 if (_LocalMainLine == "Other")
  107.                 {
  108.                     LocalLayerSign.LineWeight = LineWeight.ByLineWeightDefault;
  109.                 }
  110.                 LayerId = LocalLayerTable.Add(LocalLayerSign);
  111.                 transaction.AddNewlyCreatedDBObject(LocalLayerSign, true);
  112.                 transaction.Commit();
  113.             }
  114.         }
  115.         public void ActiveLayerSetup(string LocalLayerName)
  116.         {
  117.             // получаем ссылку на документ
  118.             Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  119.             if (AcadDoc == null) return;
  120.  
  121.             // получаем ссылку на БД
  122.             Database db = AcadDoc.Database;
  123.  
  124.             // НАЧАЛОСЬ
  125.             using (Transaction transaction = AcadDoc.TransactionManager.StartTransaction())
  126.             {
  127.                 //получаем объект таблицы слоев
  128.                 LayerTable LocalLayerTable = transaction.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
  129.  
  130.                 if (LocalLayerTable.Has(LocalLayerName) == true)
  131.                 {
  132.                     db.Clayer = LocalLayerTable[LocalLayerName];
  133.                 }
  134.                 else
  135.                 {
  136.                     return;
  137.                 }
  138.                 transaction.Commit();
  139.             }
  140.         }
  141.         public string CurrentLayerData()
  142.         {
  143.             string LocalNameCurrentLayer;
  144.             // получаем ссылку на документ
  145.             Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  146.             if (AcadDoc == null)
  147.             {
  148.                 MessageBox.Show("Документ не открыт", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  149.                 return null;
  150.             }
  151.             else
  152.             {
  153.                 //получаем объект таблицы слоев
  154.                 LocalNameCurrentLayer = (string)Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("CLAYER");
  155.                 return LocalNameCurrentLayer;
  156.             }
  157.         }
  158.         public bool IfExistLayer(string LocalLayerName)
  159.         {
  160.             // получаем ссылку на документ
  161.             Document AcadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  162.             if (AcadDoc == null) return false;
  163.             // получаем ссылку на БД
  164.             Database db = AcadDoc.Database;
  165.             using (Transaction transaction = AcadDoc.TransactionManager.StartTransaction())
  166.             {
  167.                 //получаем объект таблицы слоев
  168.                 LayerTable LocalLayerTable = transaction.GetObject(db.LayerTableId, OpenMode.ForWrite) as LayerTable;
  169.                 //Проверяем существует ли слой с таким именем
  170.                 if (LocalLayerTable.Has(LocalLayerName))
  171.                 {
  172.                     // MessageBox.Show("Слой с именем (" + LocalLayerName + ") уже существует", "Внимание", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  173.                     return false;
  174.                 }
  175.                 else
  176.                 {
  177.                     return true;
  178.                 }
  179.             }
  180.         }
  181.     }
  182.  
Цитировать
- Что бы так не мучатся с координатами, вспомните про вектора и посмотрите класс Vector2d или Vector3d
Хорошо, но тут линейная геометрия +/- не более. Но совет принял.
Цитировать
Выкладывая код, не забывайте выкладывать и смежные классы, это я про ElementLayer в строке 4 отрисовки, или выкладывайте подготовленный проект из которого убрано все лишнее и по Вашему мнению, ценное, а осталась только ошибка.
Без проблем, просто пока не готово, если кому надо - ради бога, только спросите.


Оффлайн JudasАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 78
  • Карма: 0
Re: Fatal error
« Ответ #8 : 25-04-2019, 19:48:05 »
На итог:
Пока отложил "волнистые линии".
Все спасибо за коменты.
Пока работаем по сути.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Fatal error
« Ответ #9 : 25-04-2019, 19:52:39 »
Judas,
Из того, что я вижу:
1) Если не собираешься ничего менять - не открывай с OpenMode.ForWrite, а открывай с OpenMode.ForRead
2) Если запускаешь транзакцию, то в любом случае вызывай её метод Commit. У тебя же куча мест, где это не делается.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн JudasАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 78
  • Карма: 0
Re: Fatal error
« Ответ #10 : 25-04-2019, 20:00:15 »
Принято.

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Fatal error
« Ответ #11 : 26-04-2019, 05:41:33 »
Не совсем понял для чего)!
Видимо я не совсем корректно/понятно выразился...
у Вас сейчас что то вроде:
if (dataFromExcelForm.ButtonWasClicked == true)
т.е.  "масло масленое" и если это расписать, то получится
Код - C# [Выбрать]
  1. bool localbool = dataFromExcelForm.ButtonWasClicked;
  2. if(localbool  == true){}
  3.  
Зачем выполнять сравнение, ведь у Вас уже есть булево значение, проще и понятнее написать:
Код - C# [Выбрать]
  1. if(dataFromExcelForm.ButtonWasClicked){}
  2.  

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Fatal error
« Ответ #12 : 26-04-2019, 13:47:17 »

Оффлайн JudasАвтор темы

  • ADN OPEN
  • **
  • Сообщений: 78
  • Карма: 0
Re: Fatal error
« Ответ #13 : 26-04-2019, 15:38:46 »
Принято.
Но Parse (TryParse) работает в прямыми переменными (если так можно сказать).
Например.
Код - C# [Выбрать]
  1.         public double PKtoKM(string _piket)
  2.         {
  3.             string localpiket = _piket.Replace(PK, "");
  4.             string[] Locallocalpiket = localpiket.Split('+');
  5.             double LocalPiketSto = Double.Parse(Locallocalpiket[0]);
  6.             double LocalPiketPlus = Double.Parse(Locallocalpiket[1]);
  7.             return (LocalPiketSto * 100 + LocalPiketPlus) / 1000;
  8.         }
  9.  
А вот если считывание из экселя то только Convert.
Например.
Код - C# [Выбрать]
  1.             while (ObjWorkSheet.Cells[i, 1].value != null)
  2.             {
  3.                 LocalListElementScheme.Add(new ElementScheme()
  4.                 {
  5.                     KM = Convert.ToDouble(ObjWorkSheet.Cells[i, 5].value),
  6.                     PK = Convert.ToString(ObjWorkSheet.Cells[i, 6].value),
  7.                     TypeBurden = Convert.ToString(ObjWorkSheet.Cells[i, 8].value),
  8.                     NameBurden = Convert.ToString(ObjWorkSheet.Cells[i, 9].value),
  9.                 });
  10.                 i++;
  11.             }
  12.  

Оффлайн Владимир Шу

  • ADN Club
  • *****
  • Сообщений: 611
  • Карма: 155
    • ПГСу Бложик
Re: Fatal error
« Ответ #14 : 26-04-2019, 15:49:09 »
А вот если считывание из экселя то только Convert.
Это потому, что Вы не вполне понимает с чем работает, видимо я не ошибся, когда предположил, что вы пришли на C# с VB, вба это делает сам.... бе.
Вы из экселя получаете объект, так приведите его к нужному типу
Код - C# [Выбрать]
  1. int i=0;
  2. if(int.TryParce(ObjWorkSheet.Cells[i, 5].value.toString(), out i))
  3. {
  4.   Console.WriteLine($"\ni={i}");
  5. }else
  6. {
  7.   Console.WriteLine("\nне удалось преобразовать строку");
  8. }
  9.  
  10.