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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Обозначение позиций

Обозначение позиций

Ответ
Поиск в этой теме
Непрочитано 01.02.2006, 15:32 #1
Обозначение позиций
Павел_Полтава
 
Проектирование
 
Полтава, Украина
Регистрация: 05.12.2005
Сообщений: 26

Доброе врямя суток! По причине слабой образованости, и не знания макросов, обращаюсь за советом: как создать команду для вставки символа обозначения позиции в КМД (сплайн с точкой на одном концеи кружочком с номером позиции на другом)? А то вручную делать надоело, а в програмировании не гребу
Просмотров: 3281
 
Непрочитано 01.02.2006, 15:47
#2
Кулик Алексей aka kpblc
Moderator

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


Если не сплайн, попробовать можно и http://www.autocad.ru/cgi-bin/f1/board.cgi?t=23246Kw
Если устраивает, можно и переделать.
Здесь тоже тьма программулек была.
---
Если не ндрааца, можно просто дать _.qleader, потом опцию _s (даже для русских версий, опция "Параметры" не сработает) и там все настроить
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 01.02.2006, 21:02
#3
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Чоловиче, ловите лиспу для отрисовки стрелки трехточечным сплайном. Вызывается с командной строки POZ
Код:
[Выделить все]
(defun C:POZ (/ pts blk lpt) 
  (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object)) 
        pts (apply 'append (mapcar '(lambda (x) (getpoint (strcat "\nEnter Arrow " x " Point: "))) 
              (list "1st" "2nd" "3d"))) 
        csp (if (= (vla-get-ActiveSpace adoc) 0) 
              (if (= (vla-get-mspace adoc) 1) (vla-get-ModelSpace adoc) (vla-get-PaperSpace adoc)) 
              (vla-get-ModelSpace adoc)) 
        blk (vla-insertblock csp (vlax-3d-point (mapcar '(lambda (x) (nth x pts)) '(6 7 8))) 
              (strcat (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list bks "SPN004"))) 
                     "C:\\*Здесь прописать директорию, в которой находится блок*\\" "") "SPN004") 1 1 1 0) 
        lpt (if (< (nth 3 pts) (nth 6 pts)) (- (nth 6 pts) 0.1172) 
              (+ (nth 6 pts) 0.1172)));setq 
  (vla-addLeader csp (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 8)) 
        (subst lpt (nth 6 pts) pts))) blk acSplineWithArrow) 
);end
A вот вам довесок для автонумерации
Код:
[Выделить все]
(defun *error* (msg)
  (if (= msg "Function cancelled") (princ msg)(princ));if
  (setvar "CMDECHO" cmd) (setvar "PICKAUTO" pca)   
);*error*
;
(defun vu (at / ov)
  (setq ov (vla-get-TextString at) pt (vl-string-search "." ov))
  (if (null pt) (while (wcmatch ov "*@*") (setq ov (substr ov 2)))
    (setq ov (substr ov (+ 2 pt))));if
  (strcat (vl-string-right-trim ov (vla-get-TextString at))
	  (if (= kw "Number") (itoa (+ n dn))(itoa (+ (atoi ov) dn))));strcat
);defun
; 
(defun C:KAN ( / ass ats cmd pca ov nv dn pt)
  (setq	adoc (vla-get-ActiveDocument (vlax-get-acad-object))
	cmd (getvar "CMDECHO") 	pca (getvar "PICKAUTO")
	ass (vla-get-ActiveSelectionSet adoc) n 0);setq
  (setvar "CMDECHO" 0)
  (initget "Number Renumber")
  (setq kw (getkword "\n[Number/Renumber]? <N>"))
  (if (null kw) (setq kw "Number"))
  (if (= kw "Number") (setvar "PICKAUTO" 0))
  (setq dn (getint "\nInput Start or Offset Number: <1>"))
  (if (null dn) (setq dn 1))
  (prompt (strcat "\nSelect Blocks for " kw "ing: "))
  (if (/= (vla-get-count ass) 0) (vla-clear ass))
  (vla-SelectOnScreen ass (vlax-safearray-fill (vlax-make-safearray vlax-vbInteger '(0 . 0)) '(0))
    (vlax-safearray-fill (vlax-make-safearray vlax-vbVariant '(0 . 0)) (list "*Insert")))
  (vlax-for sb ass (setq ats (vlax-invoke sb 'Getattributes))
    (if (= (length ats) 1) (setq sel car) (setq sel cadr))
    (vla-put-TextString (sel ats) (vu (sel ats)))
    (setq n (1+ n)));vlax-for
 (setvar "CMDECHO" cmd)
 (setvar "PICKAUTO" pca)
 (princ)
);end
Лентяй вне форума  
 
Автор темы   Непрочитано 02.02.2006, 16:24
#4
Павел_Полтава

Проектирование
 
Регистрация: 05.12.2005
Полтава, Украина
Сообщений: 26


Лентяй, большое спасибо, разбираюсь... :roll:
Павел_Полтава вне форума  
 
Непрочитано 03.02.2006, 01:04
#5
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Будь ласка. Ось це шлях до файла SPN004:
http://dwg.ru/forum/attach_dwg/1125991697.dwg
Лентяй вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Обозначение позиций