Re: LISP. Замена набора примитивов на выбранный примитив

А что неибудь по проще. Типа замена одного блока другим. И имено не всех как в Express. Можно выбранную группу блоков. Мне нужно именно блоки. Замена с сохранение точки и угла поворота. :)

(изменено: Victor, 9 июня 2010г. 22:13:59)

Re: LISP. Замена набора примитивов на выбранный примитив

Замена a1 на b1, a2 на b2, a3 на b3.
Блоки которые заменяем могут не быть в наличие, ошибки не возникнет.
Блоки на которые заменяем д.б. в рисунке или путях автокада, иначе возникнет ошибка.

(defun replace( b_in b_out / )
(setq s_in (cons 2 b_in))
(if(/= nil (setq blokset (ssget "_X" (list '( 0 . "INS ERT") s_in))))
  (progn
  (setq blklength (sslength blokset))
  (setq i -1 )
  (repeat blklength
     (setq i (1+ i))      
     (setq name_blk (ssname blokset i))
     (setq spis_blk (entget name_blk))
     (setq kord_b   (cdr(assoc 10 spis_blk))) 
     (setq ugol (*(cdr(assoc 50 spis_blk)) 57.297469))
     (command "_.ins ert" b_out kord_b scl scl ugol)
  ) ;repeat
  (setq i -1)
  (repeat blklength
   (setq i (1+ i))
   (entdel (ssname blokset i))
  ) ;repeat
  ) ;progn
) ;if
)

(defun c:b2b( / snp scl)
(command "_.undo" "_begin")
(setq snp (getvar "Osmode"))
(setvar "Osmode" 0) 
(setq scl (getvar "userr1"))
(if(= 0 scl)(se tq scl 1.0))

(replace "a1" "b1")
(replace "a2" "b2") 
(replace "a3" "b3") 

(se tvar "Osmode" snp)
(command "_.undo" "_end")
)

убрать пробелы в INS ERT и se tvar и se tq

Re: LISP. Замена набора примитивов на выбранный примитив

Victor,
Спасибо попробую сегодня.

Re: LISP. Замена набора примитивов на выбранный примитив

Valery Brelovsky, Промни про "фокусы" движка форума. От разрывает (ставит пробелы) там где его не просят.
PS: Victor уже внес поправку.
PPS: Мне уже не хотся ничего здесь публиковать

Re: LISP. Замена набора примитивов на выбранный примитив

Владимир Азарко,
Все пробелы вроде поубирал но работы всё рано не получилось. Или это часть от общей программы. Я собствено не увидел вобора объекта для замены.

Re: LISP. Замена набора примитивов на выбранный примитив

спасибо, на AutoCAD 2008 rus работает, нужно в коде лиспа заменить "а1" на имя заменяемого блока, "b1" на имя заменяющего блока, например: (replace "BL_46" "g5_117b") вместо (replace "a1" "b1"). При необходимости добавить подобные строки.
PS 1. функция выбора была бы не лишней (с сохранением в отдельный файл, например)
      2. возможно ли добавить функцию "раскидывания" по слоям?

Re: LISP. Замена набора примитивов на выбранный примитив

Кирилл,
Но в таком случае будут менятся все блоки, а это тоже что в Express. А мне нужно один на другой. В лучшем случае группу выбранных блоков на другой блок, но не в коем случае всех. :)

Re: LISP. Замена набора примитивов на выбранный примитив

В строчке

(if(/= nil (setq blokset (ssget "_X" (list '( 0 . "INSERT") s_in)))) 

Уберите "_X" - будет запрос на выбор

Re: LISP. Замена набора примитивов на выбранный примитив

Блок на блок? Посмотри тут http://forum.dwg.ru/showthread.php?p=582225#post582225

Re: LISP. Замена набора примитивов на выбранный примитив

Victor,
Хорошо переместимся на DWG.ru там проблем меньше.

Re: LISP. Замена набора примитивов на выбранный примитив

{Smirnoff},

Вечер добрый! Отличный лисп. Я хотел бы попросить Вас его немного модернизировать для моего случая. У меня пару тысяч координатных точек-крестовин (каждая точка с разной отметкой), мне нужно заменить ее на обыкновенную простую точку, но с сохранением старых координат и отметок. Можно ли так сделать?
Дело в том, что существующие точки-крестовины они никак не поддаются редактированию, но ваш лисп его без проблем заменяет на другой блок (точку), на ту-же координату, но отметка новая ) т.е. отметка взята с нового блока, и получается что тысяча блоков с одинаковой отметкой. Помогите пожалуйста.

Re: LISP. Замена набора примитивов на выбранный примитив

Большое спасибо.

Re: LISP. Замена набора примитивов на выбранный примитив

Помогите пожалуйста доработать этот лисп.
Суть следующая, необходимо что бы элементы примитивы заменялись не в той последовательности в которой созданы, а в последовательности с лева на право, с верху в низ.

Re: LISP. Замена набора примитивов на выбранный примитив

Здравствуйте. Помогите пожалуйста, сроки горят!!Как можно исправить этот лисп, чтоб при замене блока атрибутивная информация заменяемого блока не менялась?Очень надо!!!

Re: LISP. Замена набора примитивов на выбранный примитив

Ильгиз пишет:


Здравствуйте. Помогите пожалуйста, сроки горят!!Как можно исправить этот лисп, чтоб при замене блока атрибутивная информация заменяемого блока не менялась?Очень надо!!![/QUO
и еще чтоб масштаб оставался такиим же. спасибо за ранее!

Re: LISP. Замена набора примитивов на выбранный примитив

Помогите пожалуйста переделать данную программу под пакетную обработку четежей

(изменено: АлексЮстасу, 4 сентября 2019г. 20:21:59)

Re: LISP. Замена набора примитивов на выбранный примитив

Нельзя ли сделать замену блоков и текстов не на основе их габаритов, а в точках вставки?
По-моему, заменять  блоки по габаритам для общего случая некорректно. Разве что как опция, как особое требование.
Так же и тексты, на мой взгляд.

В принципе же, FRTO - оч. мощная и иногда очень нужная.

Re: LISP. Замена набора примитивов на выбранный примитив

Возникла необычная проблема при работе этого лиспа в автокад 2017 и 2010. Чаще всего, при замене точки блоком, блок вставляется не вместо точки, а в координату икс умноженную на минус один. Предположим точка имела координату 100,150,110, а вставится в -100,150,110. И такое бывает не всегда, но чаще всего. С чем это может быть связано?

Сообщения с 51 по 68 из 68

Тему читают: 1 гость

Страницы Назад 1 2 3

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Форумы CADUser → Программирование → Готовые программы → LISP. Замена набора примитивов на выбранный примитив