Последние сообщения

Последние сообщения

Страницы: 1 2 3 [4] 5 6 ... 10
31
Всем здравствуйте!
Я создал динамический блок. В котором задал некоторые текстовые поля через аттрибут. Для возможности подменять значение текста на его перевод на другом языке.
Внутри блока создал таблицу свойств, в котором задал соответствие языку:

Если такой блок вставляю руками и ручкой меняю значения этого свойства, то всё ок работает:


Однако, когда я вставляю этот же блок кодом, блок вставляется с пустым текстовым полем. Аттрибут не отображает какой-либо текст.
Когда я взгляну на ручку - оно отображает корректное выставленное кодом значение.
Но текст на блоке появляется только после повторного выбора значения через ручку.

Можете подсказать куда копать?
32
1. Возможность добавлять свойства группе листов.
2. Возможность присоединять файлы doc и xls с последующим помещением их в формируемый комплект.
33
AutoCAD .NET API / Re: Не меняется ориентация листа
« Последний ответ от brook 23-09-2025, 11:06:55 »
на самом деле я неправильно сформулировала. один лист формируется с  настроенным поворотом. но все последующие листы будто наследуют этот поворот. у меня чаще всего два листа в одной ориентации и два  в другой. но может быть по-разному. и вот какой ему первый задался, так он остальные и поворачивает, невзирая на текущие настройки. Причём это всё внутри отдельной команды. то есть транзакция точно закрывается и никак они не связаны друг с другом. может что-то попытаться сбросить между командами?
34
AutoCAD .NET API / Re: Не меняется ориентация листа
« Последний ответ от Привалов Дмитрий 19-09-2025, 13:31:21 »
пока на одном стенде не поставили с другого дистрибутива acad, и он стал на 90 градусов всё переворачивать. раньше явно не задавали поворот вообще, он как-то сам вставал. сейчас пытаюсь задать явно, и не работает

нужно проверить настройку плоттеров и листов. Возможно на стенде отсутствует выставляемый плоттер, либо формат лист у него задан по другому не 210*297 , а 297*210.
35
AutoCAD .NET API / Re: Не меняется ориентация листа
« Последний ответ от pavka_97 19-09-2025, 12:15:17 »
Свои плагины я использовал в 13,16,21,24 и под них нередко приходилось редактировать что-то (появлялись новые методы, библиотеки, да и глюки). В консоли тоже не все работает. Если напрямую (не из консоли запускать), работает? Лучше конечно задавать все в явном виде и в порядке как в руководстве или в примерах на форуме. Если раньше работало, а теперь нет, проверьте соответствие библиотек, фреймворков, версий автокада друг другу. Может дистрибутив новый, который вы ставили последним, кривой. Попробуйте местами поменять PlotRotation.Degrees000 и PlotRotation.Degrees090 (если глюк), дополнительно "пошевелить"/ регенерировать лист, например отцентровать psv.SetPlotCentered(ps, true).
36
AutoCAD .NET API / Re: Не меняется ориентация листа
« Последний ответ от brook 19-09-2025, 10:07:25 »
Автокад какой версии? В одной из старых версий у меня был глюк, когда 0 и 90град были перепутаны местами.

2021. это уже старая?
37
AutoCAD .NET API / Re: Не меняется ориентация листа
« Последний ответ от pavka_97 18-09-2025, 18:23:52 »
Автокад какой версии? В одной из старых версий у меня был глюк, когда 0 и 90град были перепутаны местами.
38
AutoCAD .NET API / Re: Не меняется ориентация листа
« Последний ответ от brook 18-09-2025, 10:14:07 »
Насчет настроек печати - не скажу, а вот настройки вьюпортов на листах не применяются ни какими методами. Более менее помогает переключение на вкладку Модель и обратно на лист. И то не всегда.
с вьюпортами у нас всё хорошо. мне не надо переключаться, мы через accoreconsole всё обрабатываем. у нас и с листами всё было нормально, пока на одном стенде не поставили с другого дистрибутива acad, и он стал на 90 градусов всё переворачивать. раньше явно не задавали поворот вообще, он как-то сам вставал. сейчас пытаюсь задать явно, и не работает, не могу понять почему
39
AutoCAD .NET API / Re: Не меняется ориентация листа
« Последний ответ от avc 17-09-2025, 19:38:39 »
Насчет настроек печати - не скажу, а вот настройки вьюпортов на листах не применяются ни какими методами. Более менее помогает переключение на вкладку Модель и обратно на лист. И то не всегда.
40
AutoCAD .NET API / Не меняется ориентация листа
« Последний ответ от brook 17-09-2025, 17:54:20 »
При создании Layout настраиваю формат и ориентацию листа, PlotRotation обновляется (по отладке смотрю), а PaperOrientation остаётся как был и в результате лист всё время горизонтальный, вне зависимости от PlotRotation

в командном методе такой код транзакции


Код - C# [Выбрать]
  1.  
  2. using (var tr = db.TransactionManager.StartTransaction())
  3.  {
  4.      var cult = new CultureInfo(SystemObjects.DynamicLinker.ProductLcid);
  5.  
  6.      //спрашиваем - получаем параметры листа
  7.      mLayout.Name = GetUserInputString(dwg, "\nВведите имя нового листа: ", true);
  8.      mLayout.FirstPage = GetUserBool(dwg, "\nЭто первая страница документа? 0 - нет, 1 - да ");
  9.      mLayout.FormatString = GetUserInputString(dwg, "\nФормат добавляемого листа: ", false);
  10.      mLayout.FullScreenFlag = GetUserBool(dwg, "\nБудет ли видовой экран занимать весь формат? 0 - нет, 1 - да ");
  11.      mLayout.ModelStartPoint = GetUserInputPoint(dwg, "\nВведите нижнюю левую точку отображаемой модели: ");
  12.      if (!mLayout.FullScreenFlag)
  13.          mLayout.ModelEndPoint = GetUserInputPoint(dwg, "\nВведите верхнюю правую точку отображаемой модели: ");
  14.      mLayout.ScaleFactor = GetUserInputDouble(dwg, "\nМасштаб модели будет 1 к ");
  15.  
  16.  
  17.  
  18.      // Create and select a new layout tab
  19.      var layoutSId = LayoutManager.Current.CreateAndMakeLayoutCurrent(mLayout.Name);
  20.  
  21.      // Open the created layout
  22.  
  23.      var acLay = (Layout)tr.GetObject(layoutSId, OpenMode.ForWrite);
  24.  
  25.      // Make some settings on the layout and get its extents
  26.  
  27.      acLay.SetPlotSettings(
  28.        //"ISO_full_bleed_2A0_(1189.00_x_1682.00_MM)", // Try this big boy!
  29.        mLayout,
  30.        "acad.ctb",
  31.        "DWG To PDF.pc3",
  32.        cult.EnglishName
  33.      );
  34.  
  35.      var modelExtents = mLayout.GetModelExtens();
  36.  
  37.      acLay.ApplyToViewport(
  38.        tr, 2,
  39.        vp =>
  40.        {
  41.            // Size the viewport according to the extents calculated when
  42.            // we set the PlotSettings (device, page size, etc.)
  43.            // Use the standard 10% margin around the viewport
  44.            // (found by measuring pixels on screenshots of Layout1, etc.)
  45.  
  46.            vp.ResizeViewport(mLayout.ViewPortExtents);
  47.            vp.ViewCenter = (modelExtents.MinPoint + (modelExtents.MaxPoint - modelExtents.MinPoint) * 0.5).Strip();
  48.            vp.ViewHeight = modelExtents.MaxPoint.Y - modelExtents.MinPoint.Y;
  49.            vp.Layer = "Defpoints";
  50.            //vp.CustomScale = (1 / mLayout.Scale);
  51.            /*
  52.            // Adjust the view so that the model contents fit
  53.            if (ValidDbExtents(ext.MinPoint,ext.MaxPoint))
  54.            {
  55.                vp.FitContentToViewport(ext);
  56.            }
  57.            */
  58.            // Finally we lock the view to prevent meddling
  59.            if (mLayout.Scale == StandardScaleType.CustomScale)
  60.                vp.CustomScale = 1 / mLayout.ScaleFactor;
  61.            else
  62.                vp.StandardScale = mLayout.Scale;
  63.  
  64.            vp.Locked = false;
  65.        }
  66.      );
  67.  
  68.      // Commit the transaction
  69.      tr.Commit();
  70.  }
  71.  

в Extentions  кусок такой :
Код - C# [Выбрать]
  1.  
  2. public static void SetPlotSettings(
  3.     this Layout lay, McadViewPort mcadLay, string styleSheet, string device, string local
  4. )
  5. {
  6.     using (var ps = new PlotSettings(lay.ModelType))
  7.     {
  8.         ps.CopyFrom(lay);
  9.  
  10.         var psv = PlotSettingsValidator.Current;
  11.  
  12.         // Set the device
  13.  
  14.         var devs = psv.GetPlotDeviceList();
  15.         if (devs.Contains(device))
  16.         {
  17.             psv.SetPlotConfigurationName(ps, device, null);
  18.             psv.RefreshLists(ps);
  19.         }                            
  20.        
  21.         // Set the media name/size
  22.  
  23.         var mns = psv.GetCanonicalMediaNameList(ps);
  24.  
  25.         var pageSize = mcadLay.GetPlotFormat();
  26.         if (mns.Contains(pageSize))
  27.         {
  28.             psv.SetCanonicalMediaName(ps, pageSize);
  29.         }
  30.  
  31.         // Set the pen settings
  32.  
  33.         var ssl = psv.GetPlotStyleSheetList();
  34.         if (ssl.Contains(styleSheet))
  35.         {
  36.             psv.SetCurrentStyleSheet(ps, styleSheet);
  37.         }
  38.  
  39.         psv.SetPlotRotation(ps, GetPlotRotation(mcadLay.Format));
  40.  
  41.         lay.UpgradeOpen();
  42.         // Copy the PlotSettings data back to the Layout
  43.         lay.CopyFrom(ps);
  44.  
  45.     }
  46. }
  47.  
  48. public static PlotRotation GetPlotRotation(LayoutFormats format)
  49. {
  50.     switch (format)
  51.     {
  52.         case LayoutFormats.A4:
  53.         case LayoutFormats.A3P:
  54.         case LayoutFormats.A2P:
  55.         case LayoutFormats.A1P:
  56.             return PlotRotation.Degrees000;
  57.         case LayoutFormats.A3L:
  58.         case LayoutFormats.A2L:
  59.         case LayoutFormats.A1L:
  60.         case LayoutFormats.A0:
  61.             return PlotRotation.Degrees090;
  62.     }
  63.  
  64.     return PlotRotation.Degrees000;
  65. }
  66.  
  67.  

 McadViewPort -- вспомогательный класс со всеми настройками листа, который у меня в расчёте формируется.
Код - C# [Выбрать]
  1.  
  2. public class McadViewPort
  3. {
  4.     public string Name { get; set; }
  5.  
  6.     public bool FirstPage {  get; set; } = false;
  7.     public bool FullScreenFlag { get; set; } = true;
  8.     public Point3d ModelStartPoint { get; set; }
  9.     public Point3d ModelEndPoint { get; set; }
  10.     private LayoutFormats _format;
  11.     public double ModelWidth
  12.     {
  13.         get
  14.         {
  15.             return ModelEndPoint.X > ModelStartPoint.X
  16.                ? ModelEndPoint.X - ModelStartPoint.X
  17.                : ModelStartPoint.X - ModelEndPoint.X;
  18.         }
  19.     }
  20.     public double ModelHeight
  21.     {
  22.         get
  23.         {
  24.            return ModelEndPoint.Y > ModelStartPoint.Y
  25.                ? ModelEndPoint.Y - ModelStartPoint.Y
  26.                : ModelStartPoint.Y - ModelEndPoint.Y;
  27.         }
  28.     }
  29.  
  30.     public LayoutFormats Format
  31.     {
  32.         get { return _format; }
  33.     }
  34.  
  35.     public string FormatString
  36.     {
  37.         get { return _format.ToString(); }
  38.         set
  39.         {
  40.             _format = CadUtilities.ConvertToLayoutFormat(value);
  41.             _formatExtents = SetFormatExtents(_format, FirstPage);
  42.         }
  43.     }
  44.     public double ScaleFactor
  45.     {
  46.         get { return AcadUtilities.GetScaleFactor(_scale); }
  47.         set { _scale = AcadUtilities.GetStandardScale(value); }
  48.     }
  49.  
  50.     private StandardScaleType _scale = StandardScaleType.Scale1To1;
  51.  
  52.     public StandardScaleType Scale
  53.     {
  54.         get { return _scale; }
  55.     }
  56.  
  57.     public Extents2d ViewPortExtents
  58.     {
  59.         get
  60.         {
  61.             if (FullScreenFlag)
  62.                 return _formatExtents;
  63.             else
  64.                 return GetViewPortExtens();
  65.         }
  66.     }
  67.  
  68.     private Extents2d _formatExtents;
  69.  
  70.     public double OnPaperWidth
  71.     {
  72.         get
  73.         {
  74.             return ModelWidth / ScaleFactor;
  75.         }
  76.     }
  77.     public double OnPaperHeight
  78.     {
  79.         get
  80.         {
  81.             return ModelHeight / ScaleFactor;
  82.         }
  83.     }
  84.  
  85.     public string GetPlotFormat()
  86.     {
  87.         var plotFormat = string.Empty;
  88.         switch (_format)
  89.         {
  90.             case LayoutFormats.A4:
  91.                 return "ISO_full_bleed_A4_(297.00_x_210.00_MM)";
  92.             case LayoutFormats.A3L:
  93.                 return "ISO_full_bleed_A3_(297.00_x_420.00_MM)";
  94.             case LayoutFormats.A3P:
  95.                 return "ISO_full_bleed_A3_(420.00_x_297.00_MM)";
  96.             case LayoutFormats.A2L:
  97.                 return "ISO_full_bleed_A2_(420.00_x_594.00_MM)";
  98.             case LayoutFormats.A2P:
  99.                 return "ISO_full_bleed_A2_(594.00_x_420.00_MM)";
  100.             case LayoutFormats.A1L:
  101.                 return "ISO_full_bleed_A1_(594.00_x_840.00_MM)";
  102.             case LayoutFormats.A1P:
  103.                 return "ISO_full_bleed_A1_(840.00_x_594.00_MM)";
  104.             case LayoutFormats.A0:
  105.                 return "ISO_full_bleed_A0_(840.00_x_1188.00_MM)";
  106.         }
  107.  
  108.         return plotFormat;
  109.     }
  110.  
  111.     public Extents3d GetModelExtens()
  112.     {
  113.         double maxPointX;
  114.         double maxPointY;
  115.         var height = (_formatExtents.MaxPoint.Y - _formatExtents.MinPoint.Y) * ScaleFactor;
  116.         var width = (_formatExtents.MaxPoint.X - _formatExtents.MinPoint.X) * ScaleFactor;
  117.  
  118.         if (FullScreenFlag)
  119.         {
  120.             maxPointX = ModelStartPoint.X + width;
  121.             maxPointY = ModelStartPoint.Y + height;
  122.             var maxPoint = new Point3d(maxPointX, maxPointY, 0);
  123.             return new Extents3d(ModelStartPoint, maxPoint);
  124.         }
  125.         else
  126.         {
  127.             return new Extents3d(ModelStartPoint, ModelEndPoint);
  128.         }
  129.  
  130.         //var minPoint = new Point2d(ModelStartPoint.X, ModelStartPoint.Y);
  131.     }
  132.  
  133.     public Extents2d GetViewPortExtens()
  134.     {        
  135.  
  136.         var centerX = (_formatExtents.MaxPoint.X + _formatExtents.MinPoint.X) / 2;
  137.         var centerY = (_formatExtents.MaxPoint.Y + _formatExtents.MinPoint.Y) / 2;
  138.         var minPointX = centerX - OnPaperWidth / 2;
  139.         var minPointY = centerY - OnPaperHeight / 2;
  140.         var maxPointX = minPointX + OnPaperWidth;
  141.         var maxPointY = minPointY + OnPaperHeight;
  142.         var minPoint = new Point2d(minPointX, minPointY);
  143.         var maxPoint = new Point2d(maxPointX, maxPointY);
  144.         return new Extents2d(minPoint, maxPoint);
  145.     }
  146.  
  147.     private static Extents2d SetFormatExtents(LayoutFormats format, bool firstpage)
  148.     {
  149.         var minExt = FormatWorkArea.StartPointNextPage();
  150.        
  151.         if (firstpage)
  152.         {
  153.             minExt = FormatWorkArea.StartPointFirstPage();
  154.         }
  155.        
  156.         var maxExt = FormatWorkArea.LastPoint(format);
  157.         return new Extents2d(minExt, maxExt);
  158.     }
  159. }


что с ним не так?
Страницы: 1 2 3 [4] 5 6 ... 10