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

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

Выравнивание размеров по линии

Ответ
Поиск в этой теме
Непрочитано 07.04.2011, 10:30 #1
Выравнивание размеров по линии
Yarch
 
Регистрация: 16.10.2009
Сообщений: 5

добрый день,

Подскажите, пожалуйста, лисп для выравнивания точек привязки размеров по линии.
Просмотров: 13643
 
Непрочитано 07.04.2011, 10:39
#2
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Каких размеров: линейных (поворачиваемых или выравниваемых), угловых, ординатных?
Каких точек именно: выделите размер любой и посмотрите сколько "ручек" у него подсветится, о какой из них идет речь?
Рисунок или, еще лучше, пример в dwg будет нелишним...
Do$ вне форума  
 
Непрочитано 07.04.2011, 11:50
1 | #3
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Посмотри тему Вертикальная выноска линейного размера может чего подберешь
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 20.07.2012 в 09:00.
VVA вне форума  
 
Непрочитано 07.04.2011, 12:01
1 | #4
Alkor527


 
Регистрация: 14.10.2010
Пермский край
Сообщений: 1,937
<phrase 1=


Есть надстройка для автокада (бесплатная) ModPlus. В ней есть такая функция. Правда работает она начиная с 2010 версии автокада.
Alkor527 вне форума  
 
Непрочитано 07.04.2011, 12:54
#5
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от Alkor527 Посмотреть сообщение
Есть надстройка для автокада (бесплатная) ModPlus. В ней есть такая функция. Правда работает она начиная с 2010 версии автокада.
Так более наглядно - http://modplus.ucoz.ru/index/vyravni...ykh_linij/0-27 и http://modplus.ucoz.ru/index/vyravni...ykh_linij/0-26
Modis вне форума  
 
Автор темы   Непрочитано 07.04.2011, 14:26
#6
Yarch


 
Регистрация: 16.10.2009
Сообщений: 5


О ModPlus я знаю. но хотелось бы что то на Lisp.

ЗЫ. Спасибо за ответы. Не ожидал такой оперативности.
Yarch вне форума  
 
Непрочитано 07.04.2011, 15:13
1 | #7
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от Yarch Посмотреть сообщение
О ModPlus я знаю. но хотелось бы что то на Lisp.
Легко
Код:
[Выделить все]
(vl-load-com)

(defun mp-dim-justify ( / sel i dim pt1 pt2 newpt line oldpt ed space)
  (gc)
  (setq space (mp-get-activespace))
  (princ "\nВыберите линейные размеры для выравнивания: ")
  (setq sel (ssget '((0 . "*DIMENSION")))
    i 0)
  (if (not (null sel))
    (progn
  (initget 1)
  (setq pt1 (trans (getpoint "\nУкажите первую точку линии выравнивания: ") 1 0))
  (initget 1)
  (setq pt2 (trans (getpoint pt1 "\nУкажите вторую точку линии выравнивания: ") 1 0))
  (setq line (vla-addLine space (vlax-3d-point pt1) (vlax-3d-point pt2)))
      (Repeat (sslength sel)
    (setq dim (vlax-ename->vla-object (ssname sel i)))
    (if (or (= (vla-get-ObjectName dim) "AcDbRotatedDimension")
        (= (vla-get-ObjectName dim) "AcDbAlignedDimension"))
      (progn
        (setq ed (entget (ssname sel i))
          oldpt (trans (cdr (assoc 10 ed)) 1 0))
        (setq newpt (trans (vlax-curve-getClosestPOintTo line oldpt t) 1 0))
        (setq ed (subst (cons 10 newpt) (assoc 10 ed) ed))
        (entmod ed)
        ); progn
      ); if
    (vla-Update dim)
    (setq i (1+ i))
    ); repeat
      ); progn
    ); if
          (vla-Delete line)
); defun

(defun mp-ExtensionLine-justify ( / sel i pt1 pt2 newpt1 newpt2 oldpt1 oldpt2 ed space)
  (gc)
  (setq space (mp-get-activespace))
  (princ "\nВыберите линейные размеры для выравнивания выносных линий: ")
  (setq sel (ssget '((0 . "*DIMENSION")))
    i 0)
  (if (not (null sel))
    (progn
  (initget 1)
  (setq pt1 (trans (getpoint "\nУкажите первую точку линии выравнивания: ") 1 0))
  (initget 1)
  (setq pt2 (trans (getpoint pt1 "\nУкажите вторую точку линии выравнивания: ") 1 0))
  (setq line (vla-addLine space (vlax-3d-point pt1) (vlax-3d-point pt2)))
      (Repeat (sslength sel)
    (setq dim (vlax-ename->vla-object (ssname sel i)))
    (if (= (vla-get-ObjectName dim) "AcDbRotatedDimension")
      (progn
        (setq ed (entget (ssname sel i))
          oldpt1 (trans (cdr (assoc 13 ed)) 1 0)
          oldpt2 (trans (cdr (assoc 14 ed)) 1 0))
        (setq newpt1 (trans (vlax-curve-getClosestPOintTo line oldpt1 t) 1 0)
          newpt2 (trans (vlax-curve-getClosestPOintTo line oldpt2 t) 1 0)
          ed (subst (cons 13 newpt1) (assoc 13 ed) ed)
          ed (subst (cons 14 newpt2) (assoc 14 ed) ed))
        (entmod ed)
        ); progn
      ); if
    (vla-Update dim)
    (setq i (1+ i))
    ); repeat
      ); progn
    ); if
          (vla-Delete line)
); defun

; Функция получает значение текущего пространства
(defun mp-get-activespace ( / space)
  (if (= (vla-get-activespace (vla-get-activedocument (vlax-get-acad-object))) 0)
    (setq space pspace)
    (setq space mspace))
  space
  ); defun
Modis вне форума  
 
Автор темы   Непрочитано 07.04.2011, 16:01
#8
Yarch


 
Регистрация: 16.10.2009
Сообщений: 5


большое спасибо
Yarch вне форума  
 
Непрочитано 16.07.2012, 08:09
#9
rain_day


 
Регистрация: 02.10.2008
Сообщений: 198


Modis, не могли бы Вы пояснить как им пользоваться? Выделяю размеры которые необходимо выровнять, указываю 2 точки (прямую) по поторым их необходимо подровнять и получаю в ответ:
Укажите вторую точку линии выравнивания: ; ошибка: неверный тип аргумента:
VLA-OBJECT nil
rain_day вне форума  
 
Непрочитано 16.07.2012, 09:21
#10
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от rain_day Посмотреть сообщение
Modis, не могли бы Вы пояснить как им пользоваться? Выделяю размеры которые необходимо выровнять, указываю 2 точки (прямую) по поторым их необходимо подровнять и получаю в ответ:
Укажите вторую точку линии выравнивания: ; ошибка: неверный тип аргумента:
VLA-OBJECT nil
Я лисп уже забыл, поэтому особо ничего не подскажу. Вообще лисп рабочий. Может вы просто выбираете неправильные размеры? Должны быть линейные и только линейные размеры
Modis вне форума  
 
Непрочитано 19.07.2012, 09:35
#11
xag


 
Регистрация: 16.11.2007
Сообщений: 117


Подскажите пожалуйста какую команду надо в командную строку набрать, чтобы лисп сработал.
Мои выполненые действия.
1. Создал файл в блокноте vl-load-com.txt.
2. Вставил текст лиспа, сохранил.
3. Переименовал vl-load-com.txt на vl-load-com.lsp
4. В АА2012, выполнил Загрузку приложения.
5. В командной строке набираю команду mp-dim-justify и команда не срабатывает.
6. Набираю в командной строке команду mp-ExtensionLine-justify и тоже не срабатывает.
Автокад пишет: Неизвестная команда.
Может чего не то делаю:
Заранее спасибо!!!
__________________
С уважением, xag!
xag вне форума  
 
Непрочитано 19.07.2012, 09:39
#12
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от xag Посмотреть сообщение
Подскажите пожалуйста какую команду надо в командную строку набрать, чтобы лисп сработал.
Мои выполненые действия.
1. Создал файл в блокноте vl-load-com.txt.
2. Вставил текст лиспа, сохранил.
3. Переименовал vl-load-com.txt на vl-load-com.lsp
4. В АА2012, выполнил Загрузку приложения.
5. В командной строке набираю команду mp-dim-justify и команда не срабатывает.
6. Набираю в командной строке команду mp-ExtensionLine-justify и тоже не срабатывает.
Автокад пишет: Неизвестная команда.
Может чего не то делаю:
Заранее спасибо!!!


xag, mp-dim-justify и mp-ExtensionLine-justify не команды, а функции и вызывать их надо со скобками, т.е. так (mp-dim-justify) и (mp-ExtensionLine-justify)
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 19.07.2012, 09:46
#13
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


xag, поставь себе ModPlus и не парься Там есть эти функции.
Или тут читай - Как использовать лисп, опубликованный на форуме
Modis вне форума  
 
Непрочитано 19.07.2012, 09:48
#14
xag


 
Регистрация: 16.11.2007
Сообщений: 117


Спасибо!!! Получилось!!!
Только теперь не работает!!!
Выдает:
Укажите вторую точку линии выравнивания: *Прервано*
неверный тип аргумента: VLA-OBJECT nil
А как с этим бороться?
----------
Видел программу!!! Хорошая штука.
Очень сильно понравились команды с выравниванием размеров и выносных линий размеров.
Хочется и себе такое!
Мод не хочется устанавливать, так как многое уже есть.
----------
Может я ошибаюсь, но в МодПлюс эти команды вызываются _MpDimLineJustif и _MpDimExtLineJustif.
Может в программе уже более новый лисп? Ну так, рабочий.
Просто, видимо, не у одного меня не получается использовать данный.
---------
А это единственный вариант лиспа?
Может есть ещё варианты?
А есть кто ни будь, у кого этот лисп работает? (кроме Modisа)
__________________
С уважением, xag!

Последний раз редактировалось xag, 20.07.2012 в 03:57.
xag вне форума  
 
Непрочитано 20.07.2012, 08:59
#15
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


xag, Приложи файл в котором не работает, укажи версию Автокада
ЗЫ Я поправил ссылку в посте №3. Там в #41 есть DIMALIGN и ее дальнейшее развитие DLA - Выровнять размерные линии и здесь http://forum.dwg.ru/showthread.php?p=219866#post219866
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 20.07.2012 в 09:08.
VVA вне форума  
 
Непрочитано 20.07.2012, 09:35
#16
Modis


 
Регистрация: 12.06.2010
Липецк, Москва
Сообщений: 534


Цитата:
Сообщение от xag Посмотреть сообщение
Спасибо!!! Получилось!!!
Только теперь не работает!!!
Выдает:
Укажите вторую точку линии выравнивания: *Прервано*
неверный тип аргумента: VLA-OBJECT nil
А как с этим бороться?
----------
Видел программу!!! Хорошая штука.
Очень сильно понравились команды с выравниванием размеров и выносных линий размеров.
Хочется и себе такое!
Мод не хочется устанавливать, так как многое уже есть.
----------
Может я ошибаюсь, но в МодПлюс эти команды вызываются _MpDimLineJustif и _MpDimExtLineJustif.
Может в программе уже более новый лисп? Ну так, рабочий.
Просто, видимо, не у одного меня не получается использовать данный.
---------
А это единственный вариант лиспа?
Может есть ещё варианты?
А есть кто ни будь, у кого этот лисп работает? (кроме Modisа)
Он у меня, кстати, тоже не работает
Но я уже говорил выше - я лиспом более не занимаюсь и даже пробовать разобраться с этим лиспом не буду! Я просто откопал на жестком этот лисп и поделился с просящими.
В ModPlus не более новый лисп - там вообще лиспа нет!
Modis вне форума  
 
Непрочитано 20.07.2012, 10:57
#17
xag


 
Регистрация: 16.11.2007
Сообщений: 117


Хочется выносные линии научиться выравнивать по линии. Жалко что Автокад не может обрезать их командой _trim (Обрезать). По данным ссылкам не нашел выполнение такой функции. А очень хочется. Постоянно приходится подтаскивать выносные линии размеров. Может не так искал?
-----------------
В ModPlus такая штука работает!!!!
Можно это в автокаде сделать? (без ModPlus)
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 451
Размер:	64.8 Кб
ID:	84155  
__________________
С уважением, xag!

Последний раз редактировалось xag, 27.07.2012 в 05:36.
xag вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выравнивание размеров по линии



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
выравнивание текста по линии (прилепить к линии) LAmyk AutoCAD 14 13.05.2019 12:07
Несплошные линии, X-refы и... задача Vova AutoCAD 6 20.04.2018 16:14
LISP. Выравнивание текста по двум точкам. Krieger Готовые программы 10 24.12.2011 16:02
Размер и выравнивание по линии вставляемого текста Бродяга AutoCAD 4 23.08.2006 07:34