Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
Обозначение резьбы в TFlex CAD 12, Настройка обозначения резьбы на проекции по ГОСТ 8724-2002 "Резьба метрическая... "
 
Цитата
Шурик написал:
Николай написал:T-FLEX Symbol Type A
и T-FLEX Type A как бы разные шрифты
Шурик, вы правы, я не заметил своей ошибки.
Сообщаю результат: при выборе шрифта T-FLEX Symbol Type A в статусе документа символ-разделитель диаметра и шага резьбы устанавливается на необходимый х в соответствии с ГОСТ 8724-2002.
Вот скриншот: http://ibb.co/bMKanc
Шурик, благодарю за помощь, ларчик просто открывался ;)
Обозначение резьбы в TFlex CAD 12, Настройка обозначения резьбы на проекции по ГОСТ 8724-2002 "Резьба метрическая... "
 
Цитата
Шурик написал:
по умолчанию должен быть шрифт T-FLEX Symbol Type A, скорее всего причина в этом.
Для проверки заменил в статусе шрифт - результат, к сожалению, тот же - разделитель-звёздочка, вот скриншот:
http://ibb.co/buO7DH
Обозначение резьбы в TFlex CAD 12, Настройка обозначения резьбы на проекции по ГОСТ 8724-2002 "Резьба метрическая... "
 

Здравствуйте, уважаемые форумчане.

Используемая версия TFlex CAD: 12.0.81.0 Дата сборки: October 21 2015.

Хотел бы обсудить с вами обозначение резьбы в TFlex CAD.

Согласно разделу 5 "Обозначения резьбы" по ГОСТ 8724-2002 "Резьба метрическая. Диаметры и шаги":

В условное обозначение размера резьбы должны входить: буква М, номинальный диаметр резьбы и шаг резьбы, выраженные в миллиметрах и разделённые знаком " х ".

Пример: М8х1,25.

Вот как обозначение резьбы формирует TFlex CAD 12 (слева показана проекция):

http://ibb.co/dfMq0x

Рисунок 1

На скриншоте выше (см. рисунок 1) видно, что в обозначении резьбы её диаметр и шаг разделяет символ " * " (звёздочка), имеющий код 42.

Этот код можно увидеть в окне "Вставка символа" (щёлкнув правой кнопкой мыши в любое текстовое поле и выбрав в контекстном меню "Вставить символ...".

http://ibb.co/j2LLiH

Рисунок 2

В качестве символьного шрифта в документе используется шрифт Tflexs_b.shx (меню Настройка - Статус...).
http://ibb.co/komnVx

Таким образом, обозначение резьбы, формируемое TFlex CAD 12 в моём случае не соответствует ГОСТ 8724-2002.

Прошу вашего совета в решении вопроса о том, каким образом заставить TFlex обозначать резьбу по ГОСТу, а именно вставлять между диаметром резьбы и её шагом символ " х " вместо символа " * " (звёздочка).

P.S. Помню, когда работа шла в версии TFlex CAD 10, такого вопроса не возникало, разделителем был символ " х ".

Не работает блок set свойства TFlex.Model.Model2D.MultilineText.Node
 
Доброго всем здоровья, уважаемые форумчане.

Обнаружил в классе TFlex.Model.Model2D.MultilineText (позволяет управлять многострочным текстом, см. команду TE: Создать текст - Создать многострочный текст<M>) странности при установке свойства Node. Свойству нельзя задать значение, отличное от null. То есть, с помощью API нельзя привязать текст к узлу. Вручную в CAD это, конечно, возможно.
Ниже привожу код тестового макроса. Он был создан с помощью встроенного редактора макросов TFlex CAD. Макрос находится в файле "Тест MultilineText_Node.grb".[CODE]using System;
using TFlex.Model;
using TFlex.Model.Model2D;
using System.Windows.Forms;
namespace NewMacroNamespace
{
   public class NewMacroClass
   {
       public static void Привязать_многострочный_текст_к_узлу()
       {
           Document doc = TFlex.Application.ActiveDocument;
           if (doc != null &&
               doc.Selection.GetSize() > 0 &&                //Выбран хотя бы один элемент
               doc.Selection.GetAt(0).GetType() == typeof(MultilineText))    //И это многострочный текст
           {
               if (!doc.IsChanging())
                   doc.BeginChanges("Привязка текста к узлу");
               MultilineText text = (MultilineText)doc.Selection.GetAt(0);    //В условии тип уже проверили
               FreeNode node = new FreeNode(doc, new Parameter(10), new Parameter(20));    //Координаты узла X=10, Y=20
               //Пытаемся привязать текст к только что созданному узлу node
               text.Node = node;
               if (doc.IsChanging())
                   doc.EndChanges();
               //Сообщение в окне всегда будет "Свойство Node выбранного текста: null"
               MessageBox.Show(
                   String.Format("Свойство Node выбранного текста: {0}",
                   text.Node == null ? "null" : text.Node.GetType().FullName));
           }
       }
   }
}[/CODE]Перед запуском макроса необходимо выбрать многострочный текст на единственной странице.
После выполнения строки [CODE]text.Node = node;[/CODE]свойство Node остаётся null.
В конце работы макрос всегда показывает сообщение "Свойство Node выбранного текста: null".
Для лучшего понимания, что происходит в блоке set, заглянем в недра сборки TFlexAPI с помощью бесплатной утилиты JetBrains dotPeek ([URL=https://www.jetbrains.com/decompiler/)]https://www.jetbrains.com/decompiler/)[/URL].
Декомпилированный код блока set свойства TFlex.Model.Model2D.MultilineText.Node:[CODE]// Assembly: TFlexAPI, Version=12.0.74.0, Culture=neutral, PublicKeyToken=eab6a180a6be0d77
// Assembly location: C:\Program Files (x86)\T-FLEX\T-FLEX CAD 12\Program\TFlexAPI.dll
/// <summary>
/// Узел привязки текста
/// </summary>
public unsafe Node Node
{
 get
 { ... }
 set
 {
   this.CheckObject((ModelObject) value);
   TFMultilineText* textForSet = this.TextForSet;
   if (value != null)
     return;                                    //от себя: нет никакой реализации для установки свойства
   *(int*) ((IntPtr) textForSet + 236) = -1;    //от себя: выполняется для случая value == null
 }
}[/CODE]Обратите внимание на строки:[CODE]if (value != null)
   return;[/CODE]Значит, установить свойство Node в не-null невозможно, вместо этого происходит простой возврат из блока set.
Для сравнения привожу аналогичный код для класса LineText. Он позволяет управлять строчным текстом TFlex CAD, см. команду TE: Создать текст - Создать строчный текст<D>.
Блок set для свойства TFlex.Model.Model2D.LineText.Node:[CODE]/// <summary>
/// Узел привязки текста
/// </summary>
public unsafe Node Node
{
 get
 { ... }
 set
 {
   this.CheckObject((ModelObject) value);
   if (value == null)
     *(int*) ((IntPtr) this.repSet + 236) = -1;
   else
     *(int*) ((IntPtr) this.repSet + 236) = <Module>.CTFObject.GetIndex((CTFObject*) value.repGet);
 }[/CODE]Обратите внимание, что здесь обрабатываются оба случая, когда value == null и когда != null. В отличие от MultilineText.Node, свойство LineText.Node и позволяет привязать строчный текст к заданному узлу.
Жду ваших комментариев, уважаемые форумчане.
Надеюсь, что вышеописанный недочёт дойдёт до внимания разработчиков и будет устранён для API TFlex CAD 12.
Файл "Тест MultilineText_Node.grb" прикреплён к сообщению.
Используемая версия CAD: TFlex CAD x32 12.0.74.0
Версия среды выполнения: v4.0.30319
Сборка TFlexAPI, Version=12.0.74.0, Culture=neutral, PublicKeyToken=eab6a180a6be0d77
Операционная система: Windows 7 x64.
Проблема с работой TFlex API
 
Частично решил свою проблему, установив ТFleхАРI.dll и ТFleхАРI3D.dll в глобальный кеш сборок.
Исключение System.InvalidCastException не выбрасывается, ТFleхАРI.dll и ТFleхАРI3D.dll перестали загружаться 2 раза.
Макрос заработал, но я заметил странности:
1. при выборе линии на проекции её тип стал определяться как TFlex.Model.Model2D.Outline;
2. свойство Outline.SybType == Undefined.
То есть если мне понадобится доступ к свойствам класса ProjectionOutline - ничего не выйдет.
В чём глобальная причина выяснить так и не удалось, подозреваю, что на моей машине какие-то проблемы с NET Framework.
При запуске макроса на другой машине с Windows 7 макрос отрабатывает абсолютно корректно, без установки ТFleхАРI.dll и ТFleхАРI3D.dll в GAC.
Изменено: Николай - 09.12.2013 19:47:34
Проблема с работой TFlex API
 
FullName: shqbg0gftfm, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
CodeBase: file:///C:/Program Files/T-FLEX/T-FLEX CAD 10/Program/TFlexMacroLoader.dll
FullName: cnvndeootfm, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
CodeBase: file:///C:/Program Files/T-FLEX/T-FLEX CAD 10/Program/TFlexMacroLoader.dll
FullName: MacroLibrary, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
CodeBase: file:///C:/Program Files/T-FLEX/T-FLEX CAD 10/Program/MacroLibrary.DLL
FullName: ТFleхАРI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=eab6a180a6be0d77
CodeBase: file:///C:/Program Files/T-FLEX/T-FLEX CAD 10/Program/ТFlexАРI.DLL
FullName: System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
FullName: System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
FullName: ТFleхАРI3D, Version=9.0.0.0, Culture=neutral, PublicKeyToken=28c4a25ab632a509
CodeBase: file:///C:/Program Files/T-FLEX/T-FLEX CAD 10/Program/ТFlexАРI3D.DLL
Таким образом, почему-то ТFlexАРI.dll, ТFlexАРI3D.dll загружен 2 раза. И почему-то они отличаются формой записи пути в CodeBase (формат ДОС 8.3 и формат длинного имени).
Также несколько раз встречается ТFleхMacroLoader.dll. По каким причинам ТFlexАРI.dll, ТFlexАРI3D.dll могут загружаться 2 раза?
Изменено: Николай - 05.12.2013 20:20:33
Проблема с работой TFlex API
 
FullName: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
FullName: TFlexMacroLoader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=aad0660c964b52ef
CodeBase: file:///C:/Program Files/T-FLEX/T-FLEX CAD 10/Program/TFlexMacroLoader.DLL
FullName: msvcm80, Version=8.0.50727.4027, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
CodeBase: file:///C:/WINDOWS/WinSxS/x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4027_x-ww_e69378d0/msvcm80.dll
FullName: TFlexAPI, Version=9.0.0.0, Culture=neutral, PublicKeyToken=eab6a180a6be0d77
CodeBase: file:///C:/PROGRA~1/T-FLEX/T-FLEX~3/Program/TFlexАРI.dll
FullName: ТFleхАРI3D, Version=9.0.0.0, Culture=neutral, PublicKeyToken=28c4a25ab632a509
CodeBase: file:///C:/PROGRA~1/Т-FLEХ/Т-FLEХ~3/Program/ТFleхАРI3D.dll
Изменено: Николай - 05.12.2013 20:17:00
Проблема с работой TFlex API
 
Уважаемый Osiris2000, при выполнении строки

[CODE]ProjectionOutline Pln = mo as ProjectionOutline; [/CODE]Pln всегда получает значение null при выборе линии на проекции.
Если я пишу вот так:

[CODE]Pln = (ProjectionOutline)mo;[/CODE]то возникает то же самое исключение System.InvalidCastException с тем же самым сообщением про невозможность привести тип А к типу В.
Есть странность: сборки ТFleхАРI.dll и ТFleхАРI3D.dll загружены 2 раза (перебираю AppDomain.CurrentDomain.GetAssemblies() ):
Загруженные сборки:
Проблема с работой TFlex API
 
Прошу прощения за оформление ответа в виде нескольких сообщений, но из-за длинных постов система меня банит.
[QUOTE]Вообще, было бы интересно узнать зачем вообще вам потребовалось ))[/QUOTE][CODE]ol = (ProjectionOutline)mo;[/CODE]и всю обвязку с исключениями я написал для того, чтобы понять, почему при выборе линии с проекции я не могу считать с неё информацию. Потому что строка
[CODE]Outline ol = mo as Outline;[/CODE]постоянно давала null. То есть только ради того, чтобы явным преобразованием выявить возникающее исключение и максимально подробно выяснить, что происходит.
Хотя на самом деле то конечно дело не в макросе для получения информации, это я просто для примера привожу. У меня написано несколько макросов, работающих с линиями, работа идёт через переменные класса Outline. И всё работает, пока не начинаю выбирать для обработки линии с проекций. Поэтому очень хочу досконально разобраться, почему именно линии с проекций (класс ProjectionOutline) так странно себя ведёт при доступе через переменную Outline. Чувствую, что собака зарыта тут:

[CODE]class ProjectionOutline : public Model2D::Outline; //из документации на API
[/CODE]Ведь ProjectionOutline определён в сборке ТFlехАРI3D.dll, a Outline - в TFlexAPI.dll. И какой-то ньюанс на этом стыке видимо и возникает. Но какой?
Изменено: Николай - 04.12.2013 21:16:50
Проблема с работой TFlex API
 
Здравствуйте, уважаемый [url=http://www.tflex.ru/forum/index.php?PAGE_NAME=profile_view&UID=43]Osiris2000[/url].
Спасибо за внимание к моей проблеме.
[QUOTE]При обращении к ProjectionOutline через переменную базового класса правильная работа не гарантирована. [/QUOTE]Если возможно, поясните, почему нельзя обращаться к экземпляру класса TFlex.Model.Model3D.ProjectionOutline через переменную базового класса TFlex.Model.Model2D.Outline?
И как мне можно было бы действовать наиболее корректно для решения следующей задачи:
Мой макрос должен выводить информацию из свойств выбранного объекта. Для этого я получаю сперва 1й выбранный объект, остальные не рассматриваю:

[CODE]ModelObject mo = doc.Selection.GetAt(0) as ModelObject; //Исследуем первый выделенный объект[/CODE]Затем проверяю, что же хранится в mo:
[CODE]switch (mo.GroupType) //Перебираем тип объекта
...
case ObjectType.Outline:   //Найдена линия изображения
Outline ol = mo as Outline;[/CODE]В данном случае я хочу только лишь считать свойства объекта типа Outline. Но если я выбираю линию на проекции и запускаю макрос, то mo будет содержать ссылку на экземпляр класса ProjectionOutline.
Что может плохого произойти, когда выполнится строка:
[CODE]Outline ol = mo as Outline;[/CODE]Понятно, что при любых накладках ol будет null. Но мне нужен "действительный" результат, для считывания данных или любых других операций.
Проблема с работой TFlex API
 
Здравствуйте, уважаемые старожилы и гости форума.
Пишу макрос для TFlex CAD 10.0.57.0, который показывает информацию о выделенном объекте документа. В частности, для линий типа Outline пишу код:

[CODE]ModelObject mo = doc.Selection.GetAt(0) as ModelObject; //Исследуем первый выделенный объект
...
switch (mo.GroupType) //Перебираем тип объекта
...
case ObjectType.Outline: //Найдена линия изображения
Outline ol = mo as Outline;
if (ol == null)
{
MessageBox.Show("Объект определён как \"" + mo.GroupType.ToString() + "\", но при преобразовании к типу \"" +
"\"Outline\" объект получил значение null.");
try
{
ol = (ProjectionOutline)mo;
}
catch (Exception e)
{
ReportForm errForm = new ReportForm();
errForm.SetReportText(e.Message);
errForm.ShowDialog();
}
[/CODE]В документе я выбираю линию изображения, полученную с проекции (класс ProjectionOutline). Согласно документации на TFlex API имеем:

[CODE]__gc class ProjectionOutline : public Model2D::Outline;[/CODE]Значит, я могу обращаться к ProjectionOutline через переменную базового класса Outline.
При выполнении строки
[CODE]ol = (ProjectionOutline)mo;[/CODE]генерируется исключение вот с таким сообщением (содержится в e.Message):
[A]TFlex.Model.Model3D.ProjectionOutline невозможно привести к [B]TFlex.Model.Model3D.ProjectionOutline.
Тип A происходит от ТFlехАРI3D, Version=9.0.0.0, Culture=neutral, PublicKeyToken=28c4a25ab632a509 в контексте "LoadFrom" в расположении "C:\PROGRA~1\T-FLEX\T-FLEX~3\Program\ТFlехАРI3D.dll.
Тип B происходит от ТFlехАРI3D, Version=9.0.0.0, Culture=neutral, PublicKeyToken=28c4a25ab632a509" в контексте "Default" в расположении "C:\Program Files\T-FLEX\T-FLEX CAD 10\Program\ТFlехАРI3D.dll.
Подскажите пожалуйста, что может быть не так? При компиляции проекта в свойствах ссылок на ТFlехАРI.dll и ТFlехАРI3D.dll свойство "CopyLocal == false".
Буду благодарен за любые мысли по поводу причин происхождения вышеописанного сообщения. Просто не могу понять, куда дальше копать.
Изменено: Николай - 01.12.2013 00:09:11
Описание API, Задаем админам вопросы про методы и классы API.
 
[LEFT]Доброго всем здоровья, уважаемые!
Давно тут не появлялся) Продолжаю заниматься макросами для T-Flex, к сожалению, всё ещё 10я версия, посему NET Framework 2, что печалит. Ну это лирика, а вопрос вот какой:
В документе на неактивной странице выделен строчный текст (представлен API-классом LineText). Соответственно, этот текст не виден пользователю. Подскажите пожалуйста, какими средствами API можно:
а) открыть 2Д-окно, если оно не открыто;
б) переключить активную страницу;
в) показать выбранный текст в центре области отображения.
[/LEFT]
Свойства размера
 
Здравствуйте, уважаемые.
Работаю тут потихоньку с размерами. Заметил такую забавную странность с заданием допусков через свойства LinearDimension.TolerLowerDev и LinearDimension.TolerUpperDev.
Задаю:
TolerLowerDev = new Parameter(-0.2); - изменяется поле размера, соответствующее ВЕРХНЕМУ!!!! отклонению.
TolerUpperDev = new Parameter(0.5); - изменяется поле размера, соответствующее НИЖНЕМУ!!!! отклонению.
То же самое наблюдается при чтении:
задал в размере нижнее отклонение - программно прочиталось как верхнее и наоборот.
До этой простой истины дошёл за 3 часа поиска бага в своём макросе. Сначала не поверил... Потом истерически ржал ;)
Оказалось, дело не в моей проге ;).
Надо будет проверить этот баг в 12й версии.
Порой складывается ощущение, что API доделывалось в режиме "ночь перед экзаменом".
Блок изменения документа, Особенности при работе в системе DOCs
 
Добрый день, уважаемые.
В процессе работы макроса, который создаёт оси на выбранных окружностях, иногда выбрасывается следующее исключение:

"Подробная информация об использовании оперативной
(JIT) отладки вместо данного диалогового
окна содержится в конце этого сообщения.

************** Текст исключения **************
System.IO.FileNotFoundException: Невозможно загрузить файл или сборку "tfdapi8, Version=10.0.928.0, Culture=neutral, PublicKeyToken=null" или один из зависимых от них компонентов. Не удается найти указанный файл.
Имя файла: "tfdapi8, Version=10.0.928.0, Culture=neutral, PublicKeyToken=null"
  в TFDOCsAPI8.GetFragmentDocument(TFDOCsAPI8* , DOCsHandle* , DOCsHandle* idParentDoc, DOCsHandle* idParentFragment, DOCsFragmentID* fragmentID, Boolean fVerifyExists)
  в UndoManager.Apply(UndoManager* )
  в TFlex.Model.Document.ApplyChangesEx(Boolean bCheck)
  в TFlex.Model.Document.EndChanges()
  в MacroLibrary.AxisForm.btnCreateAxis_MouseUp(Object sender, MouseEventArgs e)
  в System.Windows.Forms.Control.OnMouseUp(MouseEventArgs e)
  в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  в System.Windows.Forms.Control.WndProc(Message& m)
  в System.Windows.Forms.ButtonBase.WndProc(Message& m)
  в System.Windows.Forms.Button.WndProc(Message& m)
  в System.Windows.Forms.Control.ControlNativeWindow .OnMessage(Message& m)
  в System.Windows.Forms.Control.ControlNativeWindow .WndProc(Message& m)
  в System.Windows.Forms.NativeWindow .Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Предупреждение: регистрация привязки сборок выключена.
Чтобы включить регистрацию ошибок привязки сборок, установите значение параметра реестра [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) в 1.
Примечание. Регистрация ошибок привязки сборок может привести к некоторому снижению производительности.
Чтобы отключить эту функцию, удалите параметр реестра [HKLM\Software\Microsoft\Fusion!EnableLog].



************** Загруженные сборки **************
mscorlib
   Версия сборки: 2.0.0.0
   Версия Win32: 2.0.50727.3607 (GDR.050727-3600)
   CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
TFlexMacroLoader
   Версия сборки: 9.0.0.0
   Версия Win32: 10.0.57.0
   CodeBase: file:///C:/Program%20Files/T-FLEX/T-FLEX%20CAD%2010/Program/TFlexMacroLoader.DLL
----------------------------------------
msvcm80
   Версия сборки: 8.0.50727.3053
   Версия Win32: 8.00.50727.3053
   CodeBase: file:///C:/WINDOWS/WinSxS/x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.3053_x-ww_b80fa8ca/msvcm80.dll
----------------------------------------
TFlexAPI
   Версия сборки: 9.0.0.0
   Версия Win32: 10.0.57.0
   CodeBase: file:///C:/Program%20Files/T-FLEX/T-FLEX%20CAD%2010/Program/TFlexAPI.DLL
----------------------------------------
***
   Версия сборки: 9.0.0.0
   Версия Win32: 10.0.57.0
   CodeBase: file:///C:/Program%20Files/T-FLEX/T- *** .DLL
----------------------------------------
TFDOCsAPI
   Версия сборки: 9.0.0.0
   Версия Win32: 10.0.57.0
   CodeBase: file:///C:/Program%20Files/T-FLEX/T-FLEX%20CAD%2010/Program/TFDOCsAPI.DLL
----------------------------------------
tfdapi8
   Версия сборки: 10.0.952.0
   Версия Win32:
   CodeBase: file:///C:/Program%20Files/T-FLEX/T-FLEX%20DOCs%2010/tfdapi8.dll
----------------------------------------
9hurg1sdtfm
   Версия сборки: 0.0.0.0
   Версия Win32: 10.0.57.0
   CodeBase: file:///C:/Program%20Files/T-FLEX/T-FLEX%20CAD%2010/Program/TFlexMacroLoader.dll
----------------------------------------
MacroLibrary
   Версия сборки: 1.0.0.0
   Версия Win32: 1.0.0.0
   CodeBase: file:///C:/Program%20Files/T-FLEX/T-FLEX%20CAD%2010/Program/MacroLibrary.DLL
----------------------------------------
System.Windows.Forms
   Версия сборки: 2.0.0.0
   Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
   CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
   Версия сборки: 2.0.0.0
   Версия Win32: 2.0.50727.3614 (GDR.050727-3600)
   CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
   Версия сборки: 2.0.0.0
   Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
   CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Accessibility
   Версия сборки: 2.0.0.0
   Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
   CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
System.Windows.Forms.resources
   Версия сборки: 2.0.0.0
   Версия Win32: 2.0.50727.3053 (netfxsp.050727-3000)
   CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------

************** Оперативная отладка (JIT) **************
Для подключения оперативной (JIT) отладки файл .config данного
приложения или компьютера (machine.config) должен иметь
значение jitDebugging, установленное в секции system.windows.forms.
Приложение также должно быть скомпилировано с включенной
отладкой.

Например:

<configuration>
   <system.windows.forms jitDebugging="true" />
</configuration>

При включенной отладке JIT любое необрабатываемое исключение
пересылается отладчику JIT, зарегистрированному на данном компьютере,
вместо того чтобы обрабатываться данным диалоговым окном."

Здесь в обработчике события MouseUp (btnCreateAxis_MouseUp) макрос открывает блок изменений документа Document.BeginChanges("Создание осей"), создаёт оси на выбранных окружностях и затем пытается сохранить созданные оси командой Document.EndChanges(). Иногда всё проходит абсолютно без проблем. Но отчего-то иногда получается вот такая вот ерунда.
Есть ли у кого-то предположения, с чем может быть связано подобное поведение? Может быть существуют некие особые правила работы с блоком изменения документа при работе в интеграции с DOCs?
Работаю с T-Flex CAD 10.0.57, интеграция с файлами и документами T-Flex DOCs 10.
Свойства размера
 
Осирис, спасибо, ваш код навел меня на правильную мысль, всё получилось ;)
Свойства размера
 
Здравствуйте, уважаемые.
Возникла необходимость программно задать выбранному размеру, проставленному на проекции, свои значения номинала и отклонений.
После 3х дней попыток код макроса выложить на форум так и не удалось. Всё зависает напрочь.
Поэтому привести его здесь не могу. На словах вопрос такой:
когда я пытаюсь присвоить свойству Value класса Dimension или же свойствам TolerLowerDev, TolerUpperDev класса LinearDimension какое-либо значение - это не работает. Значения не попадают в параметры размера. Свойство ManualValue устанавливаю в true.
zip-файл с текстом програмы прикладываю к посту.
Смотрел примеры макросов, например пересчёт размеров в середину поля допуска. Судя по тем макросам всё элементарно. Но, тем не менее, простое присваивание не работает.
Может кто-то знает, как обойти проблему и всё-таки задать размеру свои собственные значения номинала и допусков.
Изменено: Николай - 24.04.2012 22:06:55
Свойство Outline.PatternName, Как получить список имён доступных в системе образцов
 
Благодарю за пояснение. Это мне неплохо поможет.
Свойство Outline.PatternName, Как получить список имён доступных в системе образцов
 
Добрый день, уважаемые посетители форума.
В ходе создания макроса возникает необходимость программного получения полного списка имён образцов штриховых линий (типов линий), которые доступны в T-Flex CAD. Макрос должен получить этот список из системы и предоставить пользователю возможность выбора типа линии из этого списка.
Затем я предполагаю использовать указанный пользователем тип для рисования линий.
Я думаю, можно решить этот вопрос "в лоб": выписать аккуратно на лист бумаги (или в текстовый файл) имена типов линий, которые находятся в выпадающем списке "Тип линии" в команде "G: Создать изображение", заполнить этими строками ComboBox, запретить пользователю редактирование поля и жить спокойно, получая из ComboBox'а выбранное имя.
Но всё же хотел бы спросить:
1. возможны ли в природе случаи, когда список типов линий может непредсказуемо измениться в результате, допустим, корректировок каких-то служебных файлов? Не окажется ли мой вручную забитый список типов линий в какой-то момент неактуальным?

В случае положительного ответа на вопрос№1 вытекает вопрос №2:

2. возможно ли программно получить фактический (актуальный) список типов линий для использования в макросе?
Свойство LineText.TextValue, Как задать его правильно
 
Решил вопрос следующим образом:
1. открываю блок изменений документа doc.BeginChanges("Изменение текста");
2. меняю цвет текста на другой и возвращаю обратно
LineText lt = doc.Selection.GetAt(0) as LineText;
Parameter cOld = lt.Color;
Parameter cNew = lt.Color;
cNew.Value++;
if (cNew.Value > 255) cNew.Value = 255;
lt.Color = cNew;      //Устанавливаем новый цвет. Судя по всему, в этот момент
//T-Flex фиксирует изменение этого конкретного объекта-текста
lt.Color = cOld;      //Возвращаем прежний цвет
lt.TextValue = "Изменённый текст";
doc.EndChanges();
При таком подходе изменения строки TextValue, "подталкиваемые" предварительным изменением цвета корректно запоминаются в блоке изменений текста. Команды "Отменить"-"Повторить" работают нормально.
Получение родительского объекта, Как получить объект-родитель для заданного объекта
 
Дарья!!! Спасибище вам агромнныыйй ;) Дали весьма дельную подсказку! Чёрт с ним с ID!!! SourceOutline - вот он, ключик!!! Я слепой, не увидел. Перетряхнул, значит класс Outline, а CenterAxisOutline мимоходом пробежал. И самое нужное пропустил!!! Сейчас на этом принципе пересмотрел другие свои вопросы. По-моему я понял принцип нахождения связей.
Дарья. Ещё раз спасибо, вы прямо не в бровь, а в глаз.
Но всё таки интересно, что же делает функция GetReference? Про неё ведь действительно нуль на массу.
Про __property ParentObjects* Parents; в справочнике API версии 10 не нашёл информации, нашёл только в API 12й версии. Так что пока на это не буду рассчитывать, пока в конторе 10ка стоит.
Изменено: Николай - 03.04.2012 19:30:20
Страницы: 1 2 3 След.