1

(4 ответов, оставленных в LISP)

хочу отписаться по поводу изучения lispa! прошло уже 2 года! в 2010 преобрел книгу по Lisp автор Полещук. так вот если приложить усилия то может все получится! я конечно не стал программистом высокого уровня,но уже  стал автоматизировать некоторые моменты. Конечно мои коды не блещут качеством и не решают каких  сложных задач, но все же это уже небольшой шаг в перед! Над освоением программирования необходимо задумываться каждому инженеру, уже  в открытых вакансиях иногда пишут что знание какого либо языка программирования приветсвуется.

и если использовать мтексты то в свойствх можно установить скрытие заднего плана.

3

(4 ответов, оставленных в AutoCAD)

У текста в совйствах начиная с 2008 есть такой параметр как аннотативность. выделяешь текст смотришь его свойства находишь параметр аннотативность выставляешь значение "да" откроются еще графы содержащие аннотативный масштаб, а так же там будет графа ориентация по листу там надо установить значение "да" после данной опрации тексты теперь будт иметь толко горизотальное положение в листе и в модели

4

(5 ответов, оставленных в AutoCAD)

как варитант создать лисп файл с содержимым

(entmake '((0 . "LAYER")  (100 . "AcDbSymbolTableRecord")  (100 . "AcDbLayerTableRecord")
         (2 . "Водопровод поземный") (70 . 0)   (290 . 1) (370 . 30)))

и при открытии черетежа будет создан  слой водопровод подземный в открываемом чертеже.
можно поднастрить параметры слоя цвет, тип линии, вес.

Вот такой получился франкинштейн! сам не силен в лиспе по этому не знаю как сделать так чтоб полилинию видно было при отрисовке может через VL-cmdf?

(defun c:b_lin_b (/)
  (setq i1 -1)
 (setq sp_p '())
 (setq sp_10 '())
  (setq p_b1 (list(reverse (cdr (reverse (assoc 10 (entget(car (entsel "\nУкажите блок:")))))))))
(while
    (setq p1 (getpoint "\nУкажите точку полилинии <Enter для завершения>: "))
      (setq sp_p (append sp_p (list p1))))
              (setq sp_2d  (mapcar 'reverse (mapcar 'cdr (mapcar 'reverse sp_p))))
  (setq p_b2 (list(reverse (cdr (reverse (assoc 10 (entget(car (entsel "\nУкажите блок:")))))))))
(repeat (length sp_p)
 (setq i1 (1+ i1))
 (setq sp_10 (append sp_10 (list 10)))
  );конец repeat
 (setq sp_tp (mapcar 'cons sp_10 sp_2d))
  (setq sp_plin (append p_b1 sp_tp p_b2 ))
    (setq k_ver(list (cons 90 ( + 2 (length sp_tp)))))
  (entmake   (append '((0 . "LWPOLYLINE") (8 . "0")  (100 . "AcDbEntity") (67 . 0) (410 . "Model")
  (100 . "AcDbPolyline")  (70 . 0) (43 . 0.0) (38 . 0.0)
 (39 . 0.0) 
  (210 0.0 0.0 1.0))  k_ver  sp_plin)))

и у меня так же strannyk. при вызове внутри команды(перенести и т.д.), выбор(Мн рамка) позволяет выпонить действие, а при выполнении команды выбрать(_select) выбор сбрасывется при переходе к другим командам. это может как раз из-за того что команда _select это есть команда?

вроде бы так должно получится с использованием nentsel
(setq a(car(nentsel)))
(entget a)

(defun atr (/ im_obj  atrib)
  (setq im_obj (car(nentsel "\nУкажите атрибут блока: ")))
  (setq atrib(cdr (assoc 1 (entget im_obj)))))

если один слой надо, то можно макрос, _-layer;_p;_n;10-SUPPORT(можно несколько записать);; елси при указании объектов надо лисп делать. зайди в поиск наверняка там уже все придумано.

Я не конструктор сказать ни могу.

Конструктора должны тебе помочь

11

(1 ответов, оставленных в AutoCAD)

создать совй текстовый стиль установить для него нужный шрифт, и во всех стилях размерных, мультивыносок, стилях таблиц установить свой текстовый стиль.можно сделать шаблон DWT.

12

(4 ответов, оставленных в AutoCAD)

если группы попробовать делать? или не подойдет такой вариант?

Disney пишет:

Ну ты же в рабочее время сделал? Тебе и так за з\п платят, надо наиборот с тебя ещё в пользу фирмы денег удержать, за то что ты рабочее время на форумы тратишь

:D  точно!
дома делал по вечерам!

в нашей жидовской  конторе (по этому и LT у всех был установлен) я гонял с модемом беспроводным собственным! :D ну только за свет если списать с меня да амартизацию компа и стула! :D все равно был бы должен! :D

Да это хорошо что денег стоит. а то на старой работе гл.инженер попросил сделать подобное, я сдеал для LT версий (других не имелось в фирме) и потом сказал что я должен все безропотно отдать бесплатно, я же тружусь на благо общего дела!

15

(6 ответов, оставленных в Готовые программы)

ObjectARX. SelSim
- выбор по образцу Ясен перец, до такого мне как говорится, с...ть и с...ть, а может и никогда не сделать! :D
написал в надежде, что кому нибудь пригодится.
мне мой код помог с объектами экспортироваными из кредо там цвет всегда задан

16

(6 ответов, оставленных в Готовые программы)

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

(defun c:vib_obj (/ sp1 sp2 sp3 sp4 sp_dxf im nab kp)
(while (= im nil)
  (setq im (car (entsel "\nУкажите объект :")))
    (if (null im) (princ "Невыбраны объекты!" )
   (progn
     (princ)
  (setq sp_dxf (entget im))
  (setq sp1 (assoc 2 sp_dxf))
  (setq sp2 (assoc 0 sp_dxf))
  (setq sp3 (assoc 8 sp_dxf))
  (setq sp4 (assoc 62 sp_dxf))
  (cond
  ((/= sp1 nil)
  (setq  nab (ssget "_X" (list sp1)))
  (sssetfirst nab nab)
  )
  ((= sp4 nil)
  (setq  nab (ssget "_X" (list sp2 sp3)))
  (sssetfirst nab nab)
  )
  ((/= sp4 nil)
  (setq  nab (ssget "_X" (list sp2 sp3 sp4)))
  (sssetfirst nab nab)
  )
  (T "")
  )
  (setq kp (strcat "Выбрано примитвов+++<"(rtos (sslength nab) 2 0 )">+++" ))
  (princ kp)
    (setq nab nil)
  (princ)
  )
  )))

17

(3 ответов, оставленных в Геодезия и картография)

а какие именно линии надо. опиши какая дложна быть?
тип линии содержит следующее
*gugk5_122_va, ----Ва----  ----- ---- ВодАртезианский
A,1,-1,1.5,-0.4,["Ва",Line_GUGK,S=1.0,R=0.0,X=0.0,Y=-0.5],-2.4,1.5,-1,4,-1,4,-1,3
1. это коментарий к линии *gugk5_122_va, ----Ва----  ----- ---- ВодАртезианский
2. А вроде всегда в начале ставится
3. 1,-1,1.5,-0.4 описание пунктира
4. ["Ва",Line_GUGK,S=1.0,R=0.0,X=0.0,Y=-0.5] текст в линии
4.1 "Ва" то что должно быть в линии
4.2 ,Line_GUGK, текстовый стиль который необходимо использовать в линии (можно не указывать тогда будет текущий стиль использоваться. и если в линии прописан текстовый стиль, то онже должен быть создан в чертеже иначе линии не подгрузятся)
4.3 S=1.0 масштаб текста
4.4 R=0.0 разворот текста
4.5 X=0.0,Y=-0.5 расположение относительно оси линии
  5. далее пунктир

18

(9 ответов, оставленных в AutoCAD)

этот слой не печатаемый и отключить данное свойство невозможно для этого слоя. предположу чтобы переносить туда объекты котрые не нужно печать. :D
специалисты точно скажут для чего он  нужен!

19

(3 ответов, оставленных в AutoCAD)

Спасибо попробую!!

20

(3 ответов, оставленных в AutoCAD)

доброго времени суток всем! возникла такая проблема! на компе в Аutocad 2008 вылетели панели инструментов
я их подгрузил через cuiload ту что в папке C:\Documents and Settings\User\Application Data\Autodesk\AutoCAD 2008\R17.1\rus\Support acad.CUI только вот панели не загрузились и я подгрузил
acadSampleWorkspaces.CUI все панели восстановились. Только действия мышью перестали работать не редактирует по двойному щелчку но выделяет обект. правая конпопка совсем не работает.
Как можно это исправить?

21

(2 ответов, оставленных в AutoCAD)

нужно начать с файла формы с расширением shx. в нем создать, попробовать создать символ, вот ссыла как с формами работать
http://forum.dwg.ru/showthread.php?t=30924, там же в довнлаоде поройся может уже готовое есть.

22

(7 ответов, оставленных в LISP)

я конечно совсем не программист, но  попробовал по вашему заданию

Ольга Л. пишет:

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

сделать что-то похожее.
в моем коде конечно вообще ни каким глянцем далеко не пахнет. но работает вроде..

(defun c:krug_v_lin (/)
(setq list_ver '());пустой список
  (setq list_centr '());пустой список
  (setq nab_cir (ssget "_X" (list  (cons 0 "CIRCLE"))));создаем набор окружностей
    (setq i -1)
     (setq kol_prim (sslength nab_cir));количество примитивов в наборе
  (repeat kol_prim; количество повторений в цикле
    (setq i (1+ i));номер примитва в наборе певый =0
    (setq koord_prim (cdr (assoc 10 (entget(ssname nab_cir i)))));извлекаем из списка примитива координаты вершины по номеру в списке
    (setq list_centr (append list_centr (list  koord_prim))));наполняем список координатами вершин <конец repeat>
  
(setq n_lin (car (nentsel "\nУкажите полилинию :")));получаем имя объекта
  
  
  (setq lin_sp (entget n_lin));получаем список объекта dxf
  
  (setq n (cdr(assoc 90 lin_sp)));получаем количество вершин полилинии
(setq i 10); присваиваем значение переменной i
(repeat n
  (setq i (+ i 4));последовательно увеличиваем переменную i
  
  (setq koord_ver (cdr (nth i lin_sp))); получаем координаты вершин полилинии по их порядковму номеру необходимо условие: полилиния значения "Послою" у всех свойств 
(setq list_ver (append list_ver (list  koord_ver))));создаем список списков коодинат вершин полилинии конец repeat
(setq a -1); присваиваем значение переменной a
  (setq b 0); присваиваем значение переменной b
  (repeat (fix(- n 1));определяем колоичество повторений
(setq a (1+ a));увеличиваем на один n раз
 (setq b (1+ b));увеличиваем на один n раз
  (setq p1 (nth a list_ver));координата вершины первой
  (setq p2 (nth b list_ver));координата вершины следующей
  (setq rast (sqrt(+(expt(-(car p2) (car p1))2) (expt(-(car(cdr p2)) (car(cdr p1)))2))));вычисляем  по формуле I=sqrt((x2-x1)^2+(y2-y1)^2)
  ;(setq rast (distance p1 p2))
    (setq list_rast (append list_rast (list  rast)))
  (setq xyz (list (/(+(car p2) (car p1))2) (/(+(car(cdr p2)) (car(cdr p1)))2) 0.0));вычисляем точку вставки круга по формуле x=(x2+x1)/2 и y=(y2+y1)/2
     (command "_move" (ssname nab_cir a) "" (nth a list_centr)  xyz  );переносим окружности в центры полилинии
    )

вот что-то такое

23

(7 ответов, оставленных в LISP)

могу посоветовать книгу Николай Полещук,Петр Лоскутов Autolisp и visual Lisp, в Среде Autocad.
я ее на Ozon.ru заказывал.

Ольга Л. пишет:

((-1 . <Entity name: 7ef4fe88>) (0 . "LWPOLYLINE") (330 . <Entity name:
7ef4fcf8>) (5 . "81") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
(100 . "AcDbPolyline") (90 . 5) (70 . 0) (43 . 0.0) (38 . 0.0) (39 . 0.0) (10
150.0 200.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 30.0 250.0) (40 . 0.0) (41 .
0.0) (42 . 0.0) (10 40.0 400.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 120.0
500.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 180.0 500.0) (40 . 0.0) (41 . 0.0)
(42 . 0.0) (210 0.0 0.0 1.0))

это список точечных пар объекта чтоб получить координаты вершин полилинии нужно извлечь координаты из списка либо функцией assoc (assoc 10(ключ доступа к точеной паре) '( )список), но функция не подойдет т.к. извлекает первую точеную пару с указанным кодом. либо использовать функцию nth которая извлекает содержимое списка по его порядковому номеру начиная с 0 (nth 0 '()) метод не универсальный т.к. если присовить цвет  вес тип то порядковый номер в списке точечных пар объекта появятся новые точечные пары,и порядковые номера поменяются.

24

(1 ответов, оставленных в AutoCAD)

Переменной вроде нет такой которая за угол поворота отвечает.может СК какая нибудь задана?

25

(5 ответов, оставленных в AutoCAD)

Каков вопрос таков ответ!
я к 3d  моделированию мало имею отношения, и помоему самый очевидный дал ответ.
выложи параметры своей шестеренки, а то что у тебя там что-то не сходится самому додумывать?
больше конкретики!