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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Продолжение макроса/лиспа после команды _qnew

Продолжение макроса/лиспа после команды _qnew

Ответ
Поиск в этой теме
Непрочитано 11.12.2009, 14:42
Продолжение макроса/лиспа после команды _qnew
Positron
 
Регистрация: 25.06.2009
Сообщений: 147

Есть необходимость чтобы макрос продолжался после создания нового файла, а именно:
соединить два макроса
^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;

Или 2-е место где нужно, это исполнение команды PL-CSE в новом файле потом назад в файл (для ускорения)

Последний раз редактировалось Positron, 11.12.2009 в 14:56.
Просмотров: 10009
 
Непрочитано 16.12.2009, 02:51
#41
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Исправленный вариант кода:
Код:
[Выделить все]
(vl-load-com)

(defun kr_wblock (/ ss n key pr filename)
  (setq ss  (ssget)
        n   0
        key t
        ) ;_ end of setq
  (while (and (ssname ss n) key (setq pr (entget (ssname ss n))))
    (if (and (eq (cdr (assoc 0 pr)) "TEXT")
             (eq (strcase (cdr (assoc 8 pr))) "NAME_FRAGMENT")
             ) ;_ end of and
      (setq key      nil
            filename (strcat (vla-get-path (vla-get-activedocument (vlax-get-acad-object))) "\\" (cdr (assoc 1 pr)))
            ) ;_ end of setq
      ) ;_ end of if
    (setq n (1+ n))
    )     ;while
  (if filename
    (progn
      (vl-file-delete (strcat filename ".dwg"))
      (setvar "filedia" 0)
      (vl-cmdf "_-wblock" filename "" "0,0,0" ss "")
      (vl-cmdf "_oops")
      (setvar "filedia" 1)
      )   ;progn
    (princ "\nНе найдена метка")
    )     ;if
  (princ)
  )       ;defun
Вроде так... Работу не проверял.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.12.2009, 05:46
#42
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Да, подчеркнуть забыл... На коленке делал...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 08:14
#43
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Как же это забыл? Не в России, что ли, живешь?
Profan вне форума  
 
Непрочитано 16.12.2009, 08:49
#44
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


А то не знаешь...
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Автор темы   Непрочитано 16.12.2009, 11:08
#45
Positron


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Вроде так... Работу не проверял.
Пашет, только про базовую точку не спрашывет...(кидает в теже координаты)
А возможно сделать шобы само определяло точку по крайней точки выделенного, та шо к осям ох и оу ближе (исключая размеры и текст)?
Positron вне форума  
 
Непрочитано 16.12.2009, 11:12
#46
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


надо подумать, пока некогда..., наверное можно
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 11:16
#47
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


Извините что отвлекаю, но на мой вопрос есть ответ?

Цитата:
Нужно выполнить команду после загрузки всех меню. Вариант с acad.mnl и автозагрузкой не срабатывает.
Дело в том, что команда не стандартная, а одной из навесок. Получается, что вызов команды происходит до загрузки требуемого меню.
в итоге
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2009, 11:32
#48
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Сделай свое меню и загружай свой mnl. Он будет грузится последним. Когда уже все остальное будет определено.
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 12:06
#49
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


Krieger, фокус не удался.
ps еще есть предложения
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2009, 12:10
#50
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


А что за навеска?
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
 
Непрочитано 16.12.2009, 12:11
#51
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


В acad.lsp запихни S::STARTUP
Profan вне форума  
 
Непрочитано 16.12.2009, 12:13
#52
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


Цитата:
Сообщение от Krieger Посмотреть сообщение
А что за навеска?
Shucad


Цитата:
В acad.lsp запихни S::STARTUP
Profan не понял
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.12.2009, 12:24
#53
Nike

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


Цитата:
Сообщение от zenon Посмотреть сообщение
Krieger, фокус не удался. ps еще есть предложения
ну так ты своей менюхой довеску загружай, а потом ее запускай
Nike вне форума  
 
Непрочитано 16.12.2009, 12:34
#54
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


Nike, говорю же фокус не удался
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 21.12.2009, 12:29
#55
Positron


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


Кстате я использую не постояно эти 2 макроса:
*^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;'_.zoom _e;_filedia;0;_saveas;2004;\\y;^C_filedia;1;_close ;

А востовном эти 3 :
*^C^C_copybase;\\\;_qnew;
^C^C_pasteclip 0,0,0;'_.zoom _e;_saveas;
^C^C'_.zoom _e;_.saveas;2004;;y;_close;

потому что надо указывать путь, он збивается...
шоб незбивался нашол неплохую прогу , советую другим - Direct Folders
у неё много ещо полезных есть функций...
И у производителя ещо много полезных прог
http://www.codesector.com/directfolders.php

_______________________________________________________________________________________________

для Kriegerа
Цитата:
надо подумать, пока некогда..., наверное можно
есть решение, его только впаять надо в сей лисп:
http://forum.dwg.ru/showthread.php?t=43089
в этой теме по сути ответ, только точку надо 1-дну, самую ближнюю выдернуть и без рисования прямоугольника...
_______________________________________________________________________________________________



Благодарен всем за помощь что уже оказана!


И отдельно Kriegerру благодарность за то что указал на мою ошибку в повиденни на форуме, это помогло мне вырасти над собой

(P.S. не думайте, я не подлизуюсь, просто во многих вопросах уже помогли за это и благодарю )

Последний раз редактировалось Positron, 21.12.2009 в 18:27. Причина: Благодарнось свою высказал, учасникам форума, от душы!
Positron вне форума  
 
Автор темы   Непрочитано 12.02.2010, 13:05
#56
Positron


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


Порошу помощи у програмистов.

Мне Krieger зделал лисп, он работает хорошо, только сохраняет в формате 2007, как зделать чтоб сохранение файла было в 2004 формате?

(возможно так? в лиспе:
перед началом лиспа поменять формат сохранения файла по умолчанию в 2004, а потом , в конце лиспа поменять обратно в 2007 формат по умолчанию)
(defun Kr_Wblock (/ ss n key pr filename)
(vl-load-com)
(setq ss (ssget) n 0 key t cmd (getvar "cmdecho"))
(while (and (ssname ss n) key (setq pr (entget (ssname ss n))) )
(if (and (eq (cdr (assoc 0 pr)) "TEXT")
(eq (strcase (cdr (assoc 8 pr))) "NAME_FRAGMENT"))
(setq key nil
filename (strcat (vla-get-path (vla-get-activedocument (vlax-get-acad-object))) "\\" (cdr (assoc 1 pr))))
)
(setq n (1+ n))
);while
(if filename
(progn

(setq lstpt (apply 'append (mapcar '(lambda (obj / minpt maxpt)
(vla-getboundingbox obj 'minpt 'maxpt)
(mapcar 'vlax-safearray->list (list minpt maxpt))
);end of lambda
(mapcar 'vlax-ename->vla-object
(vl-remove-if '(lambda (a) (wcmatch (cdr (assoc 0 (entget a))) "MTEXT,DIMENSION,*TABLE")) (sstolist ss)))
))
);end of setq

(vl-file-delete (strcat filename ".dwg"))
(vla-StartUndoMark (vla-get-activedocument (vlax-get-acad-object)))
(setvar "cmdecho" 0)
(vl-cmdf "_ucs" "_m" (list (apply 'min (mapcar 'car lstpt)) (apply 'min (mapcar 'cadr lstpt))))
(vl-cmdf "_-wblock" filename "" "0,0,0" ss "")
(vl-cmdf "_oops")
(vl-cmdf "_ucs" "_p")
(setvar "cmdecho" cmd)
(vla-EndUndoMark (vla-get-activedocument (vlax-get-acad-object)))
);progn
(princ "\nНе найдена метка")
);if
(princ)
);defun

;---------------------------------------

(defun sstolist (ss / i lst); конвертирует набор в список
(setq i 0)
(if ss
(repeat (sslength ss)
(setq lst (append lst (list (ssname ss i))) i (1+ i))
));end of repeat & if
lst
);end of sstolist
Positron вне форума  
 
Автор темы   Непрочитано 04.03.2010, 15:58
#57
Positron


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


Аномалия в файле, неработает перемищение выделенных объектов в координату 0,0,0 командой Kr_Wblock
Возможно есть какие условия, а я их нарушил?
Если есть таковые...

Во вложенни файл.
Посмотрите пожалуста, кто знает.
Вложения
Тип файла: rar Не кидает в координату 0,0,0.rar (107.8 Кб, 33 просмотров)
Positron вне форума  
 
Непрочитано 04.03.2010, 17:42
#58
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Цитата:
Сообщение от Positron Посмотреть сообщение
Аномалия в файле, неработает перемищение выделенных объектов в координату 0,0,0 командой Kr_Wblock
Возможно есть какие условия, а я их нарушил?
Если есть таковые...

Во вложенни файл.
Посмотрите пожалуста, кто знает.
В исходном файле восстанови систему координат на мировую.
_ucs -> _world
__________________
Делай хорошо, плохо само получится.
Krieger вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Продолжение макроса/лиспа после команды _qnew



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запуск программы из AutoCADа kminas Программирование 19 15.06.2012 13:42
Проблема с текстами после програмной вставки TABLE Gogi Программирование 4 16.11.2007 10:02
Проблемма после команды MOVE *LUCKY* AutoCAD 6 12.07.2007 10:25
Прозрачные команды Vova AutoCAD 17 21.06.2006 05:33