| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Новые команды для работы с полилинией

Новые команды для работы с полилинией

Ответ
Поиск в этой теме
Непрочитано 14.09.2006, 13:30 4 |
Новые команды для работы с полилинией
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,990

Данный набор программ является коллективным продуктом участников форумов autocad.ru и dwg.ru с моими доработками.
Захотелось собрать все программы для работы с полилиниями воедино и оформить как полагается.

=========== Доступные команды PLTOOLS=================
Редакция 17.06.2014
PL-JOIN -Объединение выбранных полилиний
PL-VFI -вставка вершин в выбранной полилинии в местах пересечения с
указанными полилиниями, линиями, дугами
PL-JOIN3D -Объединение 3D полилиний
PL-L2A -Замена линейного сегмента в полилинии дуговым сегментом.
PL-A2L -Замена дугового сегмента в полилинии линейным сегментом.
PL-DIV -Разбивает выбранный сегмент полилинии на указанное количество
сегментов или через указанное расстояние
PL-DIVAll -Разбивает все сегменты полилинии на указанное количество
сегментов или через указанное расстояние
PL-VxAdd -Добавляет новую вершину к полилинии
ENTREVS -Реверс объекта
ENTREV -Реверс объектов (множественный выбор)
PL-CW -Реверс выбранных полилиний по часовой стрелке
PL-CCW -Реверс выбранных полилиний против часовой стрелки
PL-VxRdc -Удаление вершин полилиний, которые лежат на одной прямой
PL-VxDel -Удаление выбранной вершины
pl-VxOpt -Удаление совпадающих вершин из полилинии
PL-NoArc -Аппроксимация дуговых сегментов полилинии
PL-Clone -Построение полилинии путем копирования ее сегментов
PL-VxMove -Перемещение вершин полилинии
PL-Vx1 -Изменение начала полилинии
ConvTo2d -Преобразование линейных объектов в 2D полилинии
ConvTo3d -Преобразование линейных объектов в 3D полилинии
MPL -Построение средней линии Более продвинутая версия Rollin_Ball.lsp Find MidBoundary between two polylines.
R3P -Прямоугольгик по 3-м точкам
PL-P90 -Рисование перпендикулярных друг к другу сегментов полилинии
PL-CSE -Объединение 2d полилиний по примитиву
PL-SgWidth -Изменить ширину сегмента полилинии

Реверс дуговых сегментов полилинии из #79
На дуговых сегментах полилинии тип линий может быть "вверх тормашками", причем реверс не помогает. Этот артефакт можно побороть, если в полилинии включить "генерацию типа линий".

Панели, лисп и инструкции здесь http://dwg.ru/dnl/607
Иконки для темной темы здесь
Обсуждаем, критикуем, предлагаем

Миниатюры
Нажмите на изображение для увеличения
Название: plrevers.jpg
Просмотров: 15347
Размер:	30.3 Кб
ID:	21079  


Последний раз редактировалось VVA, 08.09.2023 в 13:25. Причина: ссылка на иконки для темной темы
Просмотров: 367894
 
Непрочитано 21.01.2018, 17:13
#561
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,002


Цитата:
Сообщение от Boxa Посмотреть сообщение
"как то" можно, но сложно.
это из той же оперы, что блоки с несколькими параметрами видимости. Ну соберите отдельные участки-полилинии в группы, если так хочется иметь "один" объект.
Сергей812 вне форума  
 
Непрочитано 14.04.2018, 07:27
#562
Cfytrr

Балка на балку, кирпич на кирпич...
 
Регистрация: 09.10.2007
Питер
Сообщений: 4,811
Отправить сообщение для Cfytrr с помощью Skype™


В Autocad 2019 en команда "R3P -Прямоугольник по 3-м точкам" перестала корректно работать. При вводе размеров прямоугольника по первому направлению строит правильную длину грани , а по второму строит грань произвольной длины (причем длина грани всегда разная)
__________________
...переменная FILEDIA создана для привлечения пользователей к форумам.
Cfytrr вне форума  
 
Автор темы   Непрочитано 14.04.2018, 20:13
#563
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Cfytrr, пока не смогу проверить, нет 2019 автокада
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.06.2018, 11:04
#564
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Доброе время суток!

Как можно при помощи этих команд обрабатывать сразу несколько полилиний, у которых вершины на определенном участке чертежа совпадают? Требуется выделить полилинии и добавить вершину к выбранному сегменту ВО ВСЕ полилинии.
Frigate вне форума  
 
Непрочитано 06.06.2018, 16:02
#565
wepp

Инжиниринг
 
Регистрация: 16.09.2011
Тюмень
Сообщений: 224


Цитата:
Сообщение от Frigate Посмотреть сообщение
Требуется выделить полилинии и добавить вершину к выбранному сегменту ВО ВСЕ полилинии.
Попробуйте BreakObjects. В точке, где требуется добавить вершину, проведите полилинию, потом разорвите всех объекты, пересекаемые ею, с помощью лиспа, а потом соедините.
wepp вне форума  
 
Непрочитано 06.06.2018, 16:40
#566
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


мне так сделать нельзя, т.к. хэндлы объектов поменяются. А они в данном случае очень важны(фактически каждая полилиния со своим хендлом определяет кабель с его трассой на плане. При изменениях в плане нужно немного откорректировать полилинии всех кабелей. Сейчас пользуюсь функцией добавить вершину в составе инструментария от VVA. Но даже для 10 линий это занимает много времени. А есть участки, где лежит 50 кабелей )))
Frigate вне форума  
 
Непрочитано 06.06.2018, 18:25
1 | #567
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989


Цитата:
Сообщение от Frigate Посмотреть сообщение
Требуется выделить полилинии и добавить вершину к выбранному сегменту ВО ВСЕ полилинии.

Код:
[Выделить все]
 ;  Adding vertex to several plines at once 
  
(defun C:avsp (/ adoc endpar near newpt objs sf ss util)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        util (vla-get-utility adoc)
  ) ;_ end of setq
  (setq ss (ssget))
  (setq objs (mapcar 'vlax-ename->vla-object
                     (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
             ) ;_ end of mapcar
  ) ;_ end of setq
  (setq newpt (getpoint "\nPick a new vertex location: "))
  (foreach obj objs
    (setq near (vlax-curve-getclosestpointto obj newpt))
    (if (> (length near) 2.0)
      (setq near (reverse (cdr (reverse near))))
    ) ;_ end of if
    (setq endpar (+ 1.0 (float (fix (vlax-curve-getparamatpoint obj near)))))
    (vlax-invoke obj 'Addvertex endpar (reverse (cdr (reverse newpt))))
    (vla-createtypedarray util 'sf vlax-vbdouble (car newpt) (cadr newpt))
    (setq sf (vlax-make-variant sf))
    (vla-put-coordinate obj (fix endpar) sf)
  ) ;_ end of foreach
  (princ)
) ;_ end of defun
Nike вне форума  
 
Непрочитано 08.06.2018, 10:41
#568
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Nike,

благодарю!

Работает как надо.
Frigate вне форума  
 
Непрочитано 08.06.2018, 17:57
#569
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989


Цитата:
Сообщение от Frigate Посмотреть сообщение
благодарю!

Работает как надо.
Не за что.

Не хватает только после создания вершин возможности их переноса в указываемую точку на чертеже так, как это реализовано в PL-VXADD.

Ув. VVA, поможете с этим?
Nike вне форума  
 
Автор темы   Непрочитано 16.06.2018, 00:10
1 | #570
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Nike Посмотреть сообщение
Ув. VVA, поможете с этим?
Без проблем. Нужно чтобы pltools были загружены (использую пару функций). Или "достать" их оттуда
Код:
[Выделить все]
 
 ;_  Adding vertex to several plines at once 
;_Need pltools fuctions lib:pline-get-verts and pl:subst-i
(defun C:avsp (/ adoc endpar near newpt newpt1 objs sf ss util vx lst)
  (setq adoc (vla-get-activedocument (vlax-get-acad-object))
        util (vla-get-utility adoc)
  ) ;_ end of setq
  (setq ss (ssget))
  (setq objs (mapcar 'vlax-ename->vla-object
                     (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
             ) ;_ end of mapcar
  ) ;_ end of setq
  (setq newpt (getpoint "\nPick a new vertex location: "))
  (foreach obj objs
    (setq near (vlax-curve-getclosestpointto obj newpt))
    (if (> (length near) 2.0)
      (setq near (reverse (cdr (reverse near))))
    ) ;_ end of if
    (setq endpar (+ 1.0 (float (fix (vlax-curve-getparamatpoint obj near)))))
    (vlax-invoke obj 'Addvertex endpar (reverse (cdr (reverse newpt))))
    (vla-createtypedarray util 'sf vlax-vbdouble (car newpt) (cadr newpt))
    (setq sf (vlax-make-variant sf))
    (vla-put-coordinate obj (fix endpar) sf)
  ) ;_ end of foreach
   (if (setq newpt1 (getpoint newpt "\nPick a new vertex location <exit>: "))
     (progn
       (setq newpt1 (trans newpt1 1 0))
     (foreach obj objs
       (setq vx (lib:pline-get-verts obj)
             vx (pl:subst-i (fix (vlax-curve-getparamatpoint obj (vlax-curve-getclosestpointto obj(reverse (cdr (reverse newpt))))))
			  (reverse (cdr (reverse newpt1)))
			   vx)
             lst (apply 'append vx)
             )
       (vla-put-coordinates obj (vlax-make-variant (vlax-safearray-fill
             (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length lst)))) lst)))
       )
     )
     )
  (princ)
) ;_ end of defun

__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 18.06.2018, 18:05
#571
Frigate

КИП, АСУ ТП, слаботочка
 
Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422


Уважаемый VVA,

нужен совет по работе с полилиниями. У меня их сотни (каждая=1 кабель). но вершины лежат с большим разбросом. Есть ли возможность все вершины полилиний привести в указанную точку? Выделяем областью все вершины полилиний (и сами полилинии). Вершины внутри данной области нужно перенести в указанную точку.
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок.JPG
Просмотров: 61
Размер:	60.3 Кб
ID:	203657  
Frigate вне форума  
 
Непрочитано 18.06.2018, 23:31
#572
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,002


Цитата:
Сообщение от Frigate Посмотреть сообщение
Выделяем областью все вершины полилиний (и сами полилинии). Вершины внутри данной области нужно перенести в указанную точку.
Обычно один кабель рисуется нормально, а потом из-за погрешности привязки вершины полилиний других кабелей вокруг него. Поэтому логичнее привязываться к этому "опорному" кабелю. На .Net это элементарно делается:

Код:
[Выделить все]
 
        /// <summary>
        /// Элемент списка обрабатываемых полилиний
        /// </summary>
        private struct ItemPolylineInfo
        {
            /// <summary>
            /// Сама полилиния
            /// </summary>
            public Polyline PL;

            /// <summary>
            /// Базовый конструктор структуры
            /// </summary>
            /// <param name="aPL">Полилиния</param>
            public ItemPolylineInfo(Polyline aPL)
            {
                PL = aPL;
            }

            /// <summary>
            /// Получение индекса вершины, наиболее близкой к указанной пользователю точке
            /// </summary>
            /// <param name="aPoint">Указанная пользователем точка</param>
            /// <returns>Индекс ближайшей вершины (с нуля)</returns>
            public int GetNearestVertexIndex(Point3d aPoint)
            {
                int lCountVerts = PL.NumberOfVertices;
                double lMinDist = double.MaxValue;
                int lMinDistIndex = 0;
                for (int i = 0; i < lCountVerts; i++)
                {
                    double lDist = PL.GetPoint3dAt(i).DistanceTo(aPoint);
                    if (lMinDist > lDist)
                    {
                        lMinDistIndex = i;
                        lMinDist = lDist;
                    }
                }
                return lMinDistIndex;
            }

            /// <summary>
            /// Коррекция вершины полилинии, ближайшей к указанной
            /// </summary>
            /// <param name="aTransaction">Открытая транзакция</param>
            /// <param name="aBasedPoint">Базовая точка в WCS</param>
            /// <param name="aBasedPolyLineHandle">Хэндл опорной полилинии</param>
            public void CorrectVertex(Transaction aTransaction, Point3d aBasedPoint, 
                Handle aBasedPolyLineHandle)
            {
                // Пропускаем опорную полилинию
                if (PL.Handle.Equals(aBasedPolyLineHandle)) return;
                // Получаем объект полилинии в транзакции
                Polyline lTempPL = (Polyline)aTransaction.GetObject(PL.ObjectId, OpenMode.ForWrite);
                // И корректируем вершину
                int lIndexVert = GetNearestVertexIndex(aBasedPoint);
                Point3d lTransBasedPoint = aBasedPoint.TransformBy(
                    Matrix3d.WorldToPlane(lTempPL.Normal));
                lTempPL.SetPointAt(lIndexVert, new Point2d(lTransBasedPoint.X, lTransBasedPoint.Y));
            }
        }

        
        /// <summary>
        /// Команда приведений полилиний к одной вершине
        /// </summary>
        [CommandMethod("MVPLSSP", 
            CommandFlags.Modal | CommandFlags.NoBlockEditor | 
                CommandFlags.NoPaperSpace | CommandFlags.UsePickSet)]
        public static void MVPLSSP()
        {
            // Получаем текущий документ, его БД и окно редактора
            Document lAcadDoc = Application.DocumentManager.MdiActiveDocument;
            Database lAcadDb = lAcadDoc.Database;
            Editor lAcadEd = lAcadDoc.Editor;
            // Получаем набор выделенных полилиний
            PromptSelectionResult lPromptSR = lAcadEd.SelectImplied();
            if (lPromptSR != null)
            {
                if (lPromptSR.Status == PromptStatus.OK)
                {
                    SelectionSet lSelSet = lPromptSR.Value;
                    if (lSelSet.Count == 0)
                    {
                        lAcadEd.WriteMessage("\nВыберите полилинии перед запуском команды!");
                        return;
                    }
                    // Собираем информацию о выделенных полилиниях
                    List<ItemPolylineInfo> lListPLs = new List<ItemPolylineInfo>(lSelSet.Count);
                    using (Transaction lAcadTrans = lAcadDb.TransactionManager.StartTransaction())
                    {
                        foreach (ObjectId lObjId in lSelSet.GetObjectIds())
                        {
                            DBObject lAcadDBObj = lAcadTrans.GetObject(lObjId, OpenMode.ForRead);
                            Polyline lPL = lAcadDBObj as Polyline;
                            // Если объект является полилинией
                            if (lPL != null)
                            {
                                // И он не является замкнутым (замкнутый сам на себя кабель лишен смысла)
                                if (!lPL.Closed)
                                {
                                    // То добавляем полилинию в список
                                    lListPLs.Add(new ItemPolylineInfo(lPL));
                                }
                            }
                        }
                        lAcadTrans.Commit();
                    }
                    lListPLs.Capacity = lListPLs.Count;
                    // Если нет полилиний в предварительном наборе
                    if (lListPLs.Count == 0)
                    {
                        lAcadEd.WriteMessage("\nОтсутствуют незамкнутые полилинии в предварительном наборе!");
                        return;
                    }
                    // Удаляем предварительный выбор
                    lAcadEd.SetImpliedSelection(new ObjectId[0]);
                    // Запрашиваем опорную полилинию
                    PromptEntityOptions lPEO = new PromptEntityOptions(
                        "\nВыберите опорную полилинию по узлу привязки:");
                    lPEO.SetRejectMessage("\nНеобходимо выбирать полилинию!");
                    lPEO.AddAllowedClass(typeof(Polyline), true);
                    PromptEntityResult lPromptER = lAcadEd.GetEntity(lPEO);
                    // Если не было произведено выбора опорной полилинии
                    if (lPromptER.Status != PromptStatus.OK)
                    {
                        lAcadEd.WriteMessage("\nОтмена операции пользователем.");
                        return;
                    }
                    // Получаем опорную полилинию
                    Polyline lBasedPolyline = null;
                    using (Transaction lAcadTrans = lAcadDb.TransactionManager.StartTransaction())
                    {
                        lBasedPolyline = (Polyline)lAcadTrans.GetObject(
                            lPromptER.ObjectId, OpenMode.ForRead);
                        lAcadTrans.Commit();
                    }
                    // Если опорная полилиния замкнута
                    if (lBasedPolyline.Closed)
                    {
                        lAcadEd.WriteMessage("\nОпорная полилиния не должна быть замкнута!");
                        return;
                    }
                    // Создаем временный элемент с информацией об опорной полилинии
                    ItemPolylineInfo lBasedPolylineInfo = new ItemPolylineInfo(lBasedPolyline);
                    // И получаем координаты узла привязки для переноса других полилиний
                    Point3d lBasedPoint = lBasedPolyline.GetPoint3dAt(
                        lBasedPolylineInfo.GetNearestVertexIndex(lPromptER.PickedPoint));
                    // И подтягиваем полилинии, пропуская опорную
                    using (Transaction lAcadTrans = lAcadDb.TransactionManager.StartTransaction())
                    {
                        lListPLs.ForEach(delegate(ItemPolylineInfo aItem) {
                            aItem.CorrectVertex(lAcadTrans, lBasedPoint, lBasedPolyline.Handle); });
                        lAcadTrans.Commit();
                    }
                    // Вывод подтверждения
                    lAcadEd.WriteMessage("\nБыло обработано полилиний {0}", lListPLs.Count);
                    lListPLs.Clear();
                    return;
                }
            }
            // Нечего обрабатывать
            lAcadEd.WriteMessage("\nНе выделены полилинии для обработки!");
        }
т.е. выбираются сначала кабели-полилинии, затем запускается команда и указывается "опорная" полилиния-кабель близко к тому узлу, к которому надо подтянуть остальные. Код еще можно оптимизировать и уменьшать, но в целом рабочий.
Сергей812 вне форума  
 
Непрочитано 19.06.2018, 08:53
#573
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
На .Net это элементарно
вот это net-жданчик!-? а инструкция по эксплуатации?
koMon вне форума  
 
Непрочитано 19.06.2018, 09:43
#574
Setvar


 
Регистрация: 10.02.2007
Москва
Сообщений: 611


Цитата:
Сообщение от Frigate Посмотреть сообщение
Вершины внутри данной области нужно перенести в указанную точку.
Значит, должно получиться так:
Миниатюры
Нажмите на изображение для увеличения
Название: Вершины в точку.png
Просмотров: 71
Размер:	5.4 Кб
ID:	203676  
Setvar вне форума  
 
Непрочитано 19.06.2018, 16:14
#575
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,002


Цитата:
Сообщение от Setvar Посмотреть сообщение
Значит, должно получиться так:
мой код так и делает - анализирует все полилинии, входящие в предварительный набор (замкнутые полилинии и прочее игнорируется), находит у каждой из них наиболее близкую к опорной точке вершину и подтягивает ее. А опорная точка выбирается в момент указания "идеально" нарисованного кабеля рядом с вершиной, автоматически тоже подтягиваясь к этой вершине "идеальной" полилинии.

Цитата:
Сообщение от koMon Посмотреть сообщение
вот это net-жданчик!-? а инструкция по эксплуатации?
1. Загрузили через NetLoad скомпилированную под вашу версию и разрядность акада сборку.
2. Выделили кабели-полилинии (можно вместе с "идеальной", можно без - все равно пропустит при обработке. Как и все остальное - что не относиться к полилиниям).
3. Запускается команда "MVPLSSP". Она просит выбрать "идеальную" полилинию рядом с той вершиной, куда нужно подтянуть остальные полилинии из набора.
p.s. Слои, где расположены полилинии, должны быть разблокированы.
Сергей812 вне форума  
 
Непрочитано 22.06.2018, 10:51
1 | #576
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
На .Net это элементарно
ну так-то оно и в лиспе не 100-умово)
без обвесов…
выбор вершин секрамкой. уточнение - выбираются конечно же полилинии.

Код:
[Выделить все]
 
(defun c:Move_Multiple_Vertex ()
	(setq selecting_plines t
		  plines_pickset (ssadd)
	)
	(while selecting_plines
		(setq crossing_point_1 (getpoint "\nУкажите первую точку секущей рамки")
			  initget_setting (initget 32)
			  crossing_point_2 (getcorner crossing_point_1 "\nУкажите вторую точку секущей рамки")
			  plines_pickset (ssget "_C" crossing_point_1 crossing_point_2 '((0 . "*POLYLINE")))
		)
		(if (< 0 (sslength plines_pickset)) (setq selecting_plines nil))
	)
	(sssetfirst nil plines_pickset)
	(setq point_of_interest (polar crossing_point_1 (angle crossing_point_1 crossing_point_2) (/ (distance crossing_point_1 crossing_point_2) 2.0))
		  move_vertex_to_Point (getpoint point_of_interest "\nУкажите точку для перемещения выбранных вершин: ")
	)
	(while (> (sslength plines_pickset) 0)
		(setq current_pline (vlax-ename->vla-object (ssname plines_pickset 0))
			  nearest_Point (vlax-curve-getClosestPointTo current_pline point_of_interest)
			  pline_parameter (atoi (rtos (vlax-curve-getParamAtPoint current_pline nearest_Point) 2 0))
			  coordinates_list (vlax-get current_pline 'coordinates)
			  points_list '()
		)
		(while (cddr coordinates_list)
	  		(setq points_list (cons (list (car coordinates_list) (cadr coordinates_list)) points_list)
	  			coordinates_list (cddr coordinates_list)
	  		)
        )
  		(setq points_list (reverse (cons (list (car coordinates_list) (cadr coordinates_list)) points_list))
  		      coordinates_list_modified '()
		)
  		(foreach pline_point (subst (list (car move_vertex_to_Point) (cadr move_vertex_to_Point)) (nth pline_parameter points_list) points_list)
		  	(setq coordinates_list_modified (append coordinates_list_modified pline_point))
		)
  		(vl-catch-all-apply 'vlax-put (list current_pline 'coordinates coordinates_list_modified))
		(setq plines_pickset (ssdel (ssname plines_pickset 0) plines_pickset))
	)
	(princ)
)

Последний раз редактировалось koMon, 22.06.2018 в 22:12.
koMon вне форума  
 
Непрочитано 22.06.2018, 11:14
#577
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,002


Цитата:
Сообщение от koMon Посмотреть сообщение
ну так-то оно и в лиспе не 100-умово)
без обвесов…
Кому просто что привычнее - у меня задачи в основном с диалогами и обработками массивов информации - как то в лисп бессмысленно изначально было "вгрызаться" глубоко)
А даю только коды - чтобы побороть предрассудки о том, что Net так зависим от версии акада и разработчика. Может хотя бы несколько человек еще попробуют собрать библиотеку из готового кода и осознают это..
Сергей812 вне форума  
 
Непрочитано 22.06.2018, 11:23
#578
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,665


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Кому просто что привычнее - у меня задачи в основном с диалогами и обработками массивов информации - как то в лисп бессмысленно изначально было "вгрызаться" глубоко)
А даю только коды - чтобы побороть предрассудки о том, что Net так зависим от версии акада и разработчика. Может хотя бы несколько человек еще попробуют собрать библиотеку из готового кода и осознают это..
я как-то к этому готовлюсь, но инструкция по эксплуатации оказалась скупой, как мужская слеза))) особенно мне понравилось по "скомпилировать") прозвучало так, как будто компилятор C# штатно встроен в автокад)
koMon вне форума  
 
Непрочитано 22.06.2018, 11:37
#579
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,989


Цитата:
Сообщение от koMon Посмотреть сообщение
ну так-то оно и в лиспе не 100-умово)
без обвесов…
выбор вершин секрамкой


Вопросик можно по этой же части?

А можно ли программно зацепить среднюю ручку сегмента полилинии для последующего его смещения, зная координату её расположения?
Другими словами программно перетащить сегмент, как если бы я это сделал за ручку..
Nike вне форума  
 
Непрочитано 22.06.2018, 11:38
#580
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,002


Offtop:
Цитата:
Сообщение от koMon Посмотреть сообщение
прозвучало так, как будто компилятор C# штатно встроен в автокад)
т.е. современный инженер, если не нашел встроенного готового решения, то вместо поиска в гугле по "Net AutoCAD скомпилировать" впадает в панику и ступор?) Компиляторов более чем, включая и бесплатных - причем с русским интерфейсом. Информация на русском уже тоже много лет не является тайной. В крайнем случае можно попросить сисадмина разобраться.


----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Nike Посмотреть сообщение
А можно ли программно зацепить среднюю ручку сегмента полилинии для последующего его смещения, зная координату её расположения?
Зачем? Ручка для визуализации взаимодействия с пользователем - программно вершины смещайте.
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Новые команды для работы с полилинией

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск