Малые архитектурные формы

contact
Форум » Применение программ ИндорСофт » IndorCAD: Система автоматизированного проектирования

Сообщения 51 - 70 из 70

Малые архитектурные формы, Грамматика по малым архитектурным формам, делимся наработками
 
Коллеги, добрый день!
А где можно взять модели ферм опор высоковольтной ЛЭП? В стандартном меню есть только низковольтные опоры ЛЭП
ОПОРА.jpg (172.72 КБ)
 
Кирилл, приветствую!
Если изменить напряжение ЛЭП, то можно выбирать и опоры соответствующих типов.
 
Примерно так:
330kV.png (447.07 КБ)
 
Денис, спасибо!
 
Выкладываю модельки ж/д вагонов
Вагоны.png (115.13 КБ)
 
Алексей, круто!
С одним из ближайших обновлений выложим в общий доступ!
 
Алексей, модельки опубликовали с осенним обновлением IndorCAD.
Но распилили один файл на три разных, по одному на вагон, чтобы быстрее обрабатывались.
Количество непростых моделей, созданных вами, растёт!
 
Добрый день! А можно реализовать ввод через интерфейс управляющих точек для экземпляра объекта, как переменные (и массива точек может быть)?  Пригодилось бы для линейных объектов типа водосбросных лотков - точка вставки есть, а точку низа лотка указывать, вместо того, чтоб подбирать руками уклоны и повороты. И получение координат точки вставки, если этого еще нет.
Изменено: tamb.dorproekt - 14.03.2023 11:49:25
 
Анатолий, через ActiveX-интерфейс можно установить объект из файла, повернуть его.
------
NewObject = Application.ActiveProject.ActiveLayer.BeamObjects.CreateObject(X,Y)
NewObject.LoadFromFile(...)
NewObject.Angle = ...
------
Потенциально можно добавить, чтобы и значения переменных можно было через ActiveX устанавливать. Не проблема.
Главное, чтобы вам сам метод был понятен (то, что написал между ----).
 
Общий добрый день!

Модель водонапорной башни.
Изменено: Николай Новиков - 02.05.2023 10:34:20
 
Николай, впечатляет!
 
Здравствуйте.
Описание кривой Безье изменилось?

Bezier StartPoint ControlPoint1 ControlPoint2 EndPoint Size1 [Size2] [Material] [Quality];
необязательный второй размер (Size2) игнорируется и не получается плоская лента как было раньше.

Было: По умолчанию форма сечения фрагмента кривой Безье представляет
собой крест «+» с указанной шириной и высотой соответствующих «лент».
Если один из размеров равен нулю, то получаем плоскую («-» или «|»)
ленту, извитую по форме кривой.
 
Алексей, вы совершенно правы!

Кое-кто "переоптимизировал" отрисовку (виновник найден, пожурён).

Программа прожила в таком состоянии более полутора лет...
Мало кто пользуется трёхмерной кривой Безье в модельках.
Вернём в самое ближайшее время и выпустим обновление.

Спасибо за сообщение!
 
Обновление с исправлением выложено!

На всякий случай напомню тут про недавние изменения в грамматике.

   Expression → [{‘-’|‘+’}] Term [{‘-’|‘+’} Term]*
   Term → Factor [{‘*’|‘/’} Factor]*
   Factor → {‘?’LogicalExpression‘?’Expression‘:’Expression|<Значение>|Function|Identifier|PointIndentifier.{X|Y|Z}|‘(’Expression‘)’}
   Function → {‘Sin’|‘Cos’|‘Tan’|‘Atan’|‘Abs’|‘Round’|‘Sqrt’|‘Sqr’} Factor
   Identifier → {ConstName|VariableName}

Если по-человечески, то в выражениях теперь допустимо использования условного оператора ?условие?Значение1:Значение2.
Это аналог Си-шного оператора "?:", который для более быстрой обработки здесь реализован как "??:".

Пример:
   // При h=1 R получит значение 5 (3+2), в остальных случаях 1 (3+(-2))
   const
     h = 1;
     R = 3 + ?h=1? 2:-2;
 
Выкладываю модель ж/д тепловоза
Тепловоз.png (636.26 КБ)
 
Алексей, круто!
 
Выкладываю КОРОВУ
Корова.png (2.36 МБ)
 
Алексей, не перестаёте удивлять!
Мы немножко расширили грамматику для удобства создания объектов.
Выйдет с обновлением в начале следующей недели.

Нововведения:

     Для создания шейпов "на лету" (в run-time) можно использовать следующие операции
     (далее X - имя используемого шейпа).

    X[i,j] = PointExpression
     Изменить точку шейпа. i-номер части, j-номер точки в части

    X.AddPoint(PointExpression)
     Добавить точку к последней части шейпа.

    X.AddPart
     Добавить новую пустую часть к шейпу.

    X.AddCirclePart(PointExpression{Center}, Expression{Radius}, Expression{PointCount})
     Добавить к шейпу новую часть в виде окружности с указанным центром и указанным радиусом.
     Если радиус положителен - нормали формируются как для "внешнего контура",
     если радиус отрицателен - нормали формируются как для "дырки".
     Последний параметр - количество точек в окружности в диапазоне от 3 до 120.

   //================================= Пример ===============================
   shape
     My = 0; // Шейп изначально пустой
   const
     R = 2;     // радиус внешнего контура
     R2 = -0.2; // радиус "дырок" (отрицателен!)
   coord
     Base = [0,0];
   elements
     My.AddCirclePart(Base, R, 60);
     // "Дырки" будут с шагом 45°
     for i=0 to 359 step 45 do
     begin
       // Вычисляем координату центра "дырки"
       Base=[R/2*Cos(i), R/2*Sin(i)];
       My.AddCirclePart(Base, R2, 12);
     end;
     shape My 1 [0,0,0] rel [0,0,1] AColor;
   end

Более подробно будет в документации, которую обновят чуть позже...
 
Пример использования:

BeamObject 'Анкерная закладная деталь';

var
 nRod {$Количество шпилек, шт} = 12 8 36 {$Digits=0;step=1;Order=1};                    // количество шпилек, шт
 HRod {$Высота шпилек, м} = 1.30 0.94 1.80 {$Digits=2;step=0.01;Order=2};               // высота шпилек, м
 DRod {$Диаметр резьбы шпилек, м} = 0.036 0.030 0.042 {$Digits=3;step=0.001;Order=3};   // диаметр резьбы шпилек, м
 bRod {$Межосевое расстояние шпилек, м} = 0.67 0.54 1.62 {$Digits=2;step=0.01;Order=4}; // межосевое расстояние шпилек, м
 DConductor {$Диаметр кондуктора, м} = 0.77 0.63 1.76 {$Digits=2;step=0.01;Order=5};    // диаметр кондуктора, м

const
 sConductor = 0.01;  // толщина кондуктора, м
 DHole = 0.004+dRod; // диаметр отверстий под шпильки, м
 DHexNut = DRod*1.6; // диаметр гайки, м
 sHexNut = DRod*0.7; // толщина гайки, м

shape
 Contour = 0;

coord
 Base = [0,0];

color
 Color01 = [158,160,161]; // RAL 7004 Сигнальный серый
 Color02 = [203,208,204]; // RAL 7035 Светло-серый
 Color03 = [189,189,178]; // RAL 7044 Серый шёлк

elements

for a=0 to 359 step 360/nRod do
begin
 beam {$"Шпилька"} DRod [ bRod/2*Sin(a), bRod/2*Cos(a), 0] rel [ 0, 0, HRod] Color02 24;
 for e1 in [ DRod*3-sHexNut, DRod*3+sConductor, HRod-(DRod*7)-sHexNut, HRod-(DRod*7)+sConductor, HRod-sHexNut*1.5, HRod-sHexNut*2.52] do
   beam {$"Гайка"} DHexNut [ bRod/2*Sin(a), bRod/2*Cos(a), e1] rel [ 0, 0, sHexNut] Color01 6;
end;

Contour.AddCirclePart( Base,-DConductor/2, 24);
Contour.AddCirclePart( Base, DConductor/2-0.1, 24);
for i=0 to 359 step 360/nRod do
begin
 Base=[-bRod/2*Cos(i),-bRod/2*Sin(i)];
 Contour.AddCirclePart( Base, DHole/2, 12);
end;
for e2 in [ DRod*3, HRod-(DRod*7)] do
 shape {$"Кондуктор"} Contour 1 [ 0, 0, e2] rel [ 0, 0, sConductor] Color03;

end
 
Всем здравствуйте.   Вот к 1 апреля подготовил очень подвижного персонажа.  

Сообщения 51 - 70 из 70

Читают тему