Помогу бесплатно разработать любую программу на autolisp.

Тема в разделе "Autodesk", создана пользователем Германup, 3 фев 2014.

  1. alz

    alz Форумчанин

    Меняет положение текстов, мтекстов и блоков.
    Либо предварительно выбрать, тогда обработает выбранные заранее элементы или если ничего не выбрано предложит выбрать рамочкой. После выбора предложит выбрать базовую окружность, если выбрать будет закидывать в ближайшую окружность того же цвета и слоя что и базовая, если отменить будет закидывать в любую ближайшую окружность чертежа.
    Загружать через netload команда Entityincircle, на всякий случай проверяйте что бы архив был не заблокирован после скачки.
     

    Вложения:

    SalemsGhost нравится это.
  2. Огромное спасибо!!! Все работает именно так как нужно, вы сэкономили просто неимоверное количество времени на рутине, свяжитесь со мной в ЛС мне бы хотелось Вас как то отблагодарить
     
  3. Hunter23071985

    Hunter23071985 Форумчанин

    Товарищи, подскажите, как из командной строки AutoCAD 2022 RU задать ГЕОПОЛОЖЕНИЕ 58.30825 44.778478? Смотрю в справку и не могу найти...
     
  4. A-Jumaev

    A-Jumaev Форумчанин

    Здрваствуйте товарищи!
    При загрузге данные с компьютера на FTP(File Zilla Client) некоторые автокадовские файлы(dwg) сохранились в DWL формате как в FTP, так и в самом компьютере и не показываются.

    Как переобразовать их обратно в dwg формат ?

    Нуждаюсь в вашей помощи.

    upload_2023-5-22_9-57-14.png
     
  5. alz

    alz Форумчанин

    Никак, это служебные файлы, которые показывают что файл .dwg в данный момент открыт и не являются чертежом.
     
  6. Hunter23071985

    Hunter23071985 Форумчанин

    А по моему вопросу можно услышать комментарий? Собственно у меня весь чертёж строится автоматически, не хватает только автоматизации привязки к географическим координатам... Как задать ГЕОПОЛОЖЕНИЕ командой / лиспом?
     
  7. MrBrown

    MrBrown Форумчанин

    Здравствуйте!
    Помогите усовершенствовать один макрос (см. приложенный файл LSP).
    Он суммирует числовые значения в Мтекстах, обозначающих диаметр и длину трубопроводов.
    По приглашению ком. строки указываешь диаметр, выделяешь нужный фрагмент схемы и получаешь суммарную длину труб данного диаметра.
    Если не указываешь диаметр, то макрос считает общую длину вообще всех труб.

    Надо, чтобы макрос (если не указываешь диаметр) суммировал трубы, сортируя по диаметрам и вписывал в таблицу, которую сам и создавал (см. приложенный файл DWG).
    В принципе, можно даже упростить существующий макрос, удалив код, относящийся к выбору какого-либо диаметра, так как всё равно все нужные данные по всем диаметрам будут в таблице.

    Спасибо.
     

    Вложения:

    • Макрос.dwg
      Размер файла:
      567,9 КБ
      Просмотров:
      2
    • SumD.lsp
      Размер файла:
      5,7 КБ
      Просмотров:
      2
  8. Steinar

    Steinar Форумчанин

    Сейчас ради прикола спросил у ChatGPT:

    Напиши код плагина для AutoCAD 2022 на Visual Basic .NET, который рисует красную полилинию по двум точкам, при вводе команды "NEWPLINE".

    И получил результат:


    Для создания плагина AutoCAD 2022 на Visual Basic .NET, который рисует красную полилинию по двум точкам при вводе команды "NEWPLINE", вам потребуется использовать библиотеку AutoCAD .NET API. Вот пример кода, который можно использовать в качестве основы для вашего плагина:


    Imports Autodesk.AutoCAD.ApplicationServices

    Imports Autodesk.AutoCAD.DatabaseServices

    Imports Autodesk.AutoCAD.EditorInput

    Imports Autodesk.AutoCAD.Geometry

    Imports Autodesk.AutoCAD.Runtime


    Public Class NewLinePlugin

    <CommandMethod("NEWPLINE")>

    Public Sub NewLineCommand()

    ' Получение текущего документа AutoCAD

    Dim doc As Document = Application.DocumentManager.MdiActiveDocument

    ' Получение базы данных текущего документа

    Dim db As Database = doc.Database

    ' Получение редактора текущего документа

    Dim editor As Editor = doc.Editor


    ' Запрос первой точки

    Dim pprOpts As New PromptPointOptions("Введите первую точку:")

    Dim pprRes As PromptPointResult = editor.GetPoint(pprOpts)

    If pprRes.Status <> PromptStatus.OK Then

    Exit Sub

    End If

    Dim startPoint As Point3d = pprRes.Value


    ' Запрос второй точки

    Dim sprOpts As New PromptPointOptions("Введите вторую точку:")

    sprOpts.UseBasePoint = True

    sprOpts.BasePoint = startPoint

    Dim sprRes As PromptPointResult = editor.GetPoint(sprOpts)

    If sprRes.Status <> PromptStatus.OK Then

    Exit Sub

    End If

    Dim endPoint As Point3d = sprRes.Value


    ' Начало транзакции

    Using trans As Transaction = db.TransactionManager.StartTransaction()

    ' Открытие таблицы блоков текущего пространства модели

    Dim bt As BlockTable = trans.GetObject(db.BlockTableId, OpenMode.ForRead)

    Dim btr As BlockTableRecord = trans.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite)


    ' Создание полилинии

    Dim polyline As New Polyline()

    polyline.AddVertexAt(0, New Point2d(startPoint.X, startPoint.Y), 0, 0, 0)

    polyline.AddVertexAt(1, New Point2d(endPoint.X, endPoint.Y), 0, 0, 0)

    polyline.Color = Color.FromColorIndex(ColorMethod.ByAci, 1) ' Красный цвет


    ' Добавление полилинии в пространство модели

    btr.AppendEntity(polyline)

    trans.AddNewlyCreatedDBObject(polyline, True)


    ' Завершение транзакции

    trans.Commit()

    End Using


    ' Обновление экрана

    editor.Regen()

    End Sub

    End Class



    Важно убедиться, что вы добавили ссылку на библиотеку AutoCAD .NET API в вашем проекте, чтобы использовать необходимые классы и методы.

    Господь всемогущий!
    Попробуйте спросить написать код на AutoLISP, кто в нём понимает.
     
    АлексЮстасу нравится это.
  9. Alexandr-GR

    Alexandr-GR Форумчанин

     
    АлексЮстасу нравится это.
  10. alz

    alz Форумчанин

    переписанный пример из справки походу)
    --- Сообщения объединены, 5 июл 2023, Оригинальное время сообщения: 5 июл 2023 ---
    Если еще надо, могу накидать.
     
  11. MrBrown

    MrBrown Форумчанин

    alz, Дык, надо, милай!
    Уважь пенсионЭра. Свечку за здравие поставлю.
    :))
    А серьёзно - ну да, конечно, хотелось бы иметь такой макрос. Как говорится, "лень - двигатель прогресса".
    Сам в лиспе не шарю, только слегка на VBA, и то в Excel.
    Моя благодарность не припозднится.
     
  12. alz

    alz Форумчанин

    Проверить архив, что бы не был заблокирован, запускать через netload на ленте появится панелька с кнопкой, рамочкой выделить все и в выбранном месте вставить в чертеж таблицу с результатами. Просуммирует если выбранный текст удовлетворяет следующим требованиям:
    1) текст состоит из двух строк
    2) в первой строке должен быть значек диаметра, прописанный через %%C
    3) во второй строке должно быть число, после которого стоит буква "м"
    в файле примера все прекрасно сложилось один в один с уже вставленной таблицей.
    Тестировал на 2021 автокаде, в более старых должно работать версии до 17, более ранние не уверен, так же не уверен про более поздние чем 2021.
     

    Вложения:

    • SumD2.zip
      Размер файла:
      29,3 КБ
      Просмотров:
      2
  13. MrBrown

    MrBrown Форумчанин

    alz, благодарю за труды, однако пользоваться не смогу: во-первых, не умею, а во-вторых, боюсь "dll" и др. разных библиотек и примочек, как любой пенсионЭр страшится нового айфона, привыкши крутить номеронабиратель. И потом, куда мне эти "dll" вставлять?
    Спасибо. Однако мне нужен макрос на AutoLISP или CommonLISP, чтобы нормально подгрузить, как я умею, и не шарахаться от новизны.
    p.s. Весьма желательно, чтобы хотя бы основные строки кода были закомментированы (хочется хоть немного разобраться в кухне). И макрос не был конвертирован в fas и др. формы. Только ".lsp"

    p.p.s Мастера-лисперы, отзовитесь на #1407!
     
  14. alz

    alz Форумчанин

    Надо учиться жить в ногу со временем, для загрузки dll в автокаде специальная команда есть - netload называется, на лиспе что-то попроще еще можно сделать, но какие-то визуальные вещи типа таблиц на нем сделать уже реально мастер нужен.
    Вот небольшая видюшка как подгрузить и использовать этот макрос.
     
  15. MrBrown

    MrBrown Форумчанин

    alz, а в моём архиве только два файла - SumD2.dll и System.ValueTuple.dll
    автокад у меня 2020. Стиль классический, не лента.
    Вообще, считаю, что использовать ленту - гробить автокад. Эта лента занимает полэкрана, а кнопок на ней - полторы штуки.
    А главное в автокаде - это пространство модели, а не красивые кнопочки. Ну, это так, лирическое отступление.
    По команде _netload в появившемся меню выбираю файл SumD2.dll.
    И ничего не происходит.
    --- Сообщения объединены, 5 июл 2023, Оригинальное время сообщения: 5 июл 2023 ---
    alz, так, с лентой всё получилось. Моя благодарность не знает границ.
    И всё же есть тут недоделка, этакая "заноза" - работаю в классике, а чтобы посчитать длины труб, придётся переключать на ленту. А потом снова в классику.
    Беда...
    --- Сообщения объединены, 5 июл 2023 ---
    alz, заметил "кривизну", правда, небольшую: неплохо было бы расположить диаметры в таблице по порядку, сверху вниз по возрастающей.
    --- Сообщения объединены, 5 июл 2023 ---
    alz, угадываю ворчание в стиле "Ну вот, начались дополнительные хотелки..."
    :))
     
  16. alz

    alz Форумчанин

    Проверьте что бы скачанный архив был не заблокирован

    так как ленты нет можете просто воспользоваться командой "sumd2" после загрузки dll она должна появиться, кнопка на ленте это так, бонусом
     

    Вложения:

  17. MrBrown

    MrBrown Форумчанин

    alz, да команда sumd2 работает в классике. Прекрасно.
    А можно ли сделать так, чтобы диаметры в таблице шли сверху вниз по возрастающей?
    Я вот просто поменял один диаметр 40 на диаметр 20. И он (20) оказался в самом низу таблицы. А должен был сверху.
    --- Сообщения объединены, 5 июл 2023, Оригинальное время сообщения: 5 июл 2023 ---
    И ещё: при каждом включении автокада приходится подгружать файл dll, Как сделать, чтобы он после первой подгрузки оставался там и при последующих включениях? С файлами lsp такое возможно.
     
  18. alz

    alz Форумчанин

    Сделал сортировку, и возможность автозагрузки, для автоматической загрузки папку SumD2.bundle надо положить в папку C:\Program Files\Autodesk\ApplicationPlugins
    Проверьте что бы архив был разблокирован и папка не задвоилась при распаковке
    если интересно в текстовом файле текст самой программы
     

    Вложения:

  19. MrBrown

    MrBrown Форумчанин

    alz, очень интересно, спасибо за код! Много схожего с VBA (в смысле, наименования команд).
    А что это за язык программирования?
     
  20. paniva2010

    paniva2010 Форумчанин

    Можно ли сделать программу для превращения 3д-полилинии, 2д-полилинии, мультилинии в полилинию?
     
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление