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

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

Можно ли вместо отрезков чертить сразу двумя паралельными линиями

Ответ
Поиск в этой теме
Непрочитано 01.05.2005, 17:06
Можно ли вместо отрезков чертить сразу двумя паралельными линиями
bdfy
 
Регистрация: 30.04.2005
Сообщений: 141

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

PS: может у кого подобный чертежик завалялся? моя благодарность будет безмерной
[ATTACH]1114952804.gif[/ATTACH]

Последний раз редактировалось Солидворкер, 30.07.2009 в 08:56.
Просмотров: 42352
 
Автор темы   Непрочитано 08.05.2005, 13:51
#21
bdfy


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


вот незадача - автокад то у меня русский по тому и не работает видимо просит первую линию выбрать , кликаешь и вce Какие команды может поменять можно на аналоги из локализации ?
Надеюсь вы не возражаете , запостчу лисп сюда может кто подскажет как под 2004рус подогнать.
Код:
[Выделить все]
;;Inttr.lsp ©2001 Alexey Sheinkman
;;Single line trimming at intersection point
;;
;
(defun *error* (msg)
  (if (= msg "Function cancelled") (princ msg)(princ));if
  (setvar "OSMODE" sn) (setvar "CMDECHO" cm) (redraw ln 4)   
);*error*
;
(defun C:MlinInt ( / m off pt1 pt2 bl ln)
 (setvar "CMDECHO" 0)
 (setq 	cm (getvar "CMDECHO")
	sn (getvar "OSMODE")
	ln (car (entsel "\nSelect line above: "))
	adoc (vla-get-activedocument (vlax-get-acad-object))
	lts (vla-get-LineTypes adoc)
	mlstd (vla-item (vla-get-Dictionaries adoc) "ACAD_MLINESTYLE")
	csp (vlax-invoke adoc "ObjectIDtoObject" (vla-get-ownerID ln0))
 );setq
 (redraw ln 3)
 (terpri)
 (prompt "\nSelect line(s) below: ")
 (setq ssln (ssget))
 (setq m (1- (sslength ssln)))
 (princ (strcat "\nSelected " (itoa (sslength ssln)) " lines"))
 (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list lts "Hidden2")))
    (vla-load lts "Hidden2" "acad.lin"))
 (while (<= 0 m)
   (setq ln1 (ssname ssln m))
   (command "-mledit" "cc" ln1 ln "")
   (setq ln0 (vlax-ename->vla-object ln1))
   (vlax-for rec mlstd (setq mlst (entget (vlax-vla-object->ename rec)))
     (if (= (cdr (assoc 2 mlst)) (vla-get-StyleName ln0))
       (foreach n mlst (cond ((= (car n) 49) (setq ofs (cons (cdr n) ofs)))
			     ((= (car n) 70) (setq jst (cdr n)))))))
   (setq off (- (car ofs) (last ofs))
	 cc (vlax-get ln0 'coordinates)
	 pt1 (list (car cc) (cadr cc) (nth 2 cc))
	 pt2 (list (nth 3 cc) (nth 4 cc) (nth 5 cc))
	 bl (vla-addLine csp (vlax-3d-point pt1) (vlax-3d-point pt2)));setq
   (vla-put-linetype bl "Hidden2")
   (command "TRIM" ln "" (vlax-vla-object->ename bl) pt1 pt2 "")
   (setq sp (vlax-get bl 'StartPoint) ep (vlax-get bl 'EndPoint))
   (if (= jst 1) (mapcar (lambda (x) vla-offset bl (* off x)) '(0.5 -0.5))
     (vla-offset bl (* off (cond ((= jst 0) 1) ((= jst 2) -1)))));if
   (setq m (1- m))
  );while
  (redraw ln 4)
  (setvar "OSMODE" sn)
  (setvar "CMDECHO" cm)
  (princ)
);end
bdfy вне форума  
 
Автор темы   Непрочитано 09.05.2005, 21:48
#22
bdfy


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


все еще актуально...
bdfy вне форума  
 
Непрочитано 09.05.2005, 22:05
#23
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Странно (command "-mledit" "_cc" ln1 ln "") убивает мой AutoCAD 2005. Причем даже в "ручном" режиме - закрытие без объяснений. А вообще до этого исполнение программы даже не доходит. Неговоря о типичном отсутствии _. и _ для локализованных версий, отсутствии там типа линии Hidden2 есть другие ошибки. К примеру программа пытается получить "владельца объекта" csp (vlax-invoke adoc "ObjectIDtoObject" (vla-get-ownerID ln0)) когда переменной ln0 еще в помине нет. И еще пару штук нашел пока добраляся до убийственной строчки. Пусть автор исправляет.

Ну ты и Лентяй!!! Поленился проверить работоспособность! Хотя возможно она у тебя и работает при проверке. ln0- глобальная и остается с прошлого запуска. А у меня почему то AutoCAD закрывается без предупреждения на указанном COMMAND при работе программы и через FATAL ERROR при "ручном" прогоне той же команды...
{Smirnoff} вне форума  
 
Автор темы   Непрочитано 09.05.2005, 23:34
#24
bdfy


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


обидно, товарищи... что мне самому лисп садиться изучать ? я конечно с удовольствием, но не хватит уже времени
bdfy вне форума  
 
Непрочитано 10.05.2005, 00:41
#25
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от bdfy
обидно, товарищи... что мне самому лисп садиться изучать ? я конечно с удовольствием, но не хватит уже времени
За это время уже вручную можно было сделать!!!
А по существу, я проанализировал программу, нашел те же ошибки, которые отметил уважаемый Fantomas и даже подправил их. Но в логике программы есть ошибки, которые я так и не понял...
Код:
[Выделить все]
;;Inttr.lsp c2001 Alexey Sheinkman 
;;Multyline trimming at intersection point 
;; 
          ; 
(defun *error* (msg)
  (if (= msg "Function cancelled")
    (princ msg)
    (princ)
  )         ;if 
  (setvar "OSMODE" sn)
  (setvar "CMDECHO" cm)
  (redraw ln 4)
)         ;*error* 
          ; 
(defun C:MlineInt (/ m off pt1 pt2 bl ln)
  (vl-load-com)
  (setvar "CMDECHO" 0)
  (setq cm    (getvar "CMDECHO")
        sn    (getvar "OSMODE")
        ln    (car (entsel "\nSelect line above: "))
        adoc  (vla-get-activedocument (vlax-get-acad-object))
        lts   (vla-get-LineTypes adoc)
        mlstd (vla-item (vla-get-Dictionaries adoc) "ACAD_MLINESTYLE")
        ln0   (vlax-ename->vla-object ln)
        csp   (vlax-invoke adoc "ObjectIDtoObject" (vla-get-ownerID ln0))
  )         ;setq 
  (redraw ln 3)
  (terpri)
  (prompt "\nSelect line(s) below: ")
  (setq ssln (ssget))
  (setq m (1- (sslength ssln)))
  (princ (strcat "\nSelected " (itoa (sslength ssln)) " lines"))
  (if (vl-catch-all-error-p
  (vl-catch-all-apply 'vla-item (list lts "невидимая2"))
      )
    (vla-load lts "невидимая2" "acad.lin")
  )
  (while (<= 0 m)
    (setq ln1 (ssname ssln m))
    (command "_-mledit" "_cc" ln1 ln "")
    (setq ln0 (vlax-ename->vla-object ln1))
    (vlax-for rec mlstd
      (setq mlst (entget (vlax-vla-object->ename rec)))
      (if (= (cdr (assoc 2 mlst)) (vla-get-StyleName ln0))
       (foreach n mlst
         (cond
           ((= (car n) 49) (setq ofs (cons (cdr n) ofs)))
           ((= (car n) 70) (setq jst (cdr n)))
         )
       )
      )
    )
    (setq off (- (car ofs) (last ofs))
      cc  (vlax-get ln0 'coordinates)
      pt1 (list (car cc) (cadr cc) (nth 2 cc))
      pt2 (list (nth 3 cc) (nth 4 cc) (nth 5 cc))
      bl  (vla-addLine csp (vlax-3d-point pt1) (vlax-3d-point pt2))
    )         ;setq 
    (vla-put-linetype bl "невидимая2")
    (command "_TRIM" ln "" (vlax-vla-object->ename bl) pt1 pt2 "")
    (setq sp (vlax-get bl 'StartPoint)
          ep (vlax-get bl 'EndPoint)
    )
    (if (= jst 1)
      (mapcar (lambda (x) vla-offset bl (* off x)) '(0.5 -0.5))
      (vla-offset
         bl
         (* off
            (cond ((= jst 0) 1)
            ((= jst 2) -1)
            )
         )
      )
    )         ;if 
    (setq m (1- m))
  )         ;while 
  (redraw ln 4)
  (setvar "OSMODE" sn)
  (setvar "CMDECHO" cm)
  (princ)
)         ;end
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 10.05.2005, 01:10
#26
bdfy


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


Александр Ривилис
в таком виде лисп уже что-то делает ... только непонятно что и уж точно не то что надо...
Цитата:
За это время уже вручную можно было сделать!!!
Люди должны думать машины - работать (c)
Лучше полчаса потерять потом за пять минут долететь (c)
мысль ясна ?
Не могу я тупую механическую работу делать - я скорее еще пару дней потрачу на то чтобы ее в 3д изобразить.
BTW, неужели таки нет способа выдавить мультилинии ? в полилинии преобразовать перед этим ? это бы решило все проблемы.
bdfy вне форума  
 
Непрочитано 10.05.2005, 01:20
#27
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от bdfy
Люди должны думать машины - работать (c)
Лучше полчаса потерять потом за пять минут долететь (c)
мысль ясна ?
Не могу я тупую механическую работу делать - я скорее еще пару дней потрачу на то чтобы ее в 3д изобразить.
Мысль очень понятна. Одно не понятно - почему за тебя думать должны другие :?:
Цитата:
Сообщение от bdfy
BTW, неужели таки нет способа выдавить мультилинии ? в полилинии преобразовать перед этим ? это бы решило все проблемы.
Однозначно НЕТ. :!:
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 10.05.2005, 01:33
#28
bdfy


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


Цитата:
Одно не понятно - почему за тебя думать должны другие
вот не надо , я репу чешу как могу , только вот с автокадом я дай бог чтоб недели две знаком , так что многого у меня самостийно не получится
Ничего подобного на Мсэшную запись макроса в автокаде пока нет , следовательно с наскоку ничего не напишешь , вот я и обращаюсь за помощью.
Цитата:
Однозначно НЕТ
пессимист... Вот почему я могу руками взорвать мультилинию ,потом сделать область из ее крайних линий ( сплошные ) и выдавить , а вот скриптом тоже самое для всех мультилиний на чертеже почему то слабо ? Может все таки попытаетесь ради хотя бы спортивного интереса ?
bdfy вне форума  
 
Непрочитано 10.05.2005, 10:14
#29
Лентяй

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


bdfy: в таком виде лисп уже что-то делает ... только непонятно что и уж точно не то что надо...

:? Так эта, пересекалка тоись, она того... пересекает ежели млиния млинию где-нить посеред - тады да, а ежели, того, с краю, тады ой. А на опоре вышей ваще млинии все какие та замкнтые и отрезками эта, секутся тоись. Во она и того. не хвурыкаеть.
Лентяй вне форума  
 
Автор темы   Непрочитано 10.05.2005, 13:29
#30
bdfy


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


Лентяй
грустно...
Значит надо гнуть идею с выдавливанием. У кого нибудь есть идеи как обьеденить с области все четырехугольники ( они из сплошных отрезков получаются после взрыва )?

PS BTW , а что умеет библиотека метеллоконструкций компаса ? никто не пользовался ?
bdfy вне форума  
 
Автор темы   Непрочитано 13.05.2005, 19:28
#31
bdfy


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


Стоп, так все проще чем я думал... Взрываю чертеж , потом применяю _region ко всему чертежу ( эта команда находит и обьеденият в области все что мне нужно ) птом выдавливаю все получившиеся четырехугольники. Получаю как раз нужное мне псевдо 3д за пару кликов
в одном не могу разобраться - как изменить порядок следования 3д обьектов ? т.е опустить нужные на уровень ниже\выше ? Команды порядок и тп, что на панелях редактированя можно найти , что-то не видно чтобы давали какой то эффект.
Если не понятно о чем я , пример здесь
http://redhammer.h14.ru/testcad.rar
Как опустить одну из балок ниже остальных ( по оси Z) ?Только move?
так может лиспик дадите перемещающий выбранный обьетк на заданное в лиспе растояние по оси Z?
bdfy вне форума  
 
Автор темы   Непрочитано 15.05.2005, 00:12
#32
bdfy


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


накропайте пожалуйста лиспик перемещающий выделенный обьект по оси Z на заданное растояние... я же замучаюсь _move, ткнуть , потом @0,0,50 ... я ведь почти добил этот курсач.
bdfy вне форума  
 
Непрочитано 15.05.2005, 07:47
#33
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


Повесь на кнопку такой макрос
Код:
[Выделить все]
^C^C^P(setq *ss (ssget))(vl-cmdf "_.move" "_p" "" "0,0,0" "@0,0,50")(setq *ss nil)(princ);
На LT работать не будет.
Torino вне форума  
 
Автор темы   Непрочитано 15.05.2005, 14:49
#34
bdfy


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


спасибо, что такое LT я даже не знаю, так что неудобства мне похоже не грозит
Я вот не пойму - почему штриховыми невидимые части так и не отображаются ( после _OBSCUREDLTYPE 2)?
Нарисовал куб для теста : все равно все невидимые сплошными ? что еще натиснуть надо чтобы скрытые линии отображались как я хочу?
bdfy вне форума  
 
Непрочитано 15.05.2005, 15:10
#35
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


_HIDE не забыл сделать? Они же сами по себе не будут скрываться.
Кстати, а чем ты куб рисовал?
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 15.05.2005, 15:32
#36
bdfy


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


забыл конечно... спасибо.
работает, только почему так тормозит после этого ? после регенерации не рабоате ни зум, ни пан , только 3д орбитой можно это сбросить.
Что-то в хелпе про такие "приколы" ни слова... Это так должно быть ( т.е _hide нужно делать перед самой печатью и динамический автокад выполнять данную операцию не умеет ) или у меня что-то настроено не так ?
аппартное ускорение через wopengl8.hdi включено.
а рисовал я скорее паралелипипед ( просто я такие слова не выпечатываю ) рисование - 3м поверхности.
bdfy вне форума  
 
Автор темы   Непрочитано 15.05.2005, 16:33
#37
bdfy


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


а как все таки лисп сделать для перемещения обькта ? удобней все таки пользоваться будет.
Пробовал вот так - ничего не работает
Цитата:
(defun C:up (*ss)
(vl-load-com)
(setq *ss (ssget))
(command "_.move" "_p" "" "0,0,0" "@0,0,50""")
(setq *ss nil)
(princ (strcat "\nПередвинули ")
) ;_ end of defun
bdfy вне форума  
 
Непрочитано 15.05.2005, 16:48
#38
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,408
Отправить сообщение для Александр Ривилис с помощью Skype™


Код:
[Выделить все]
(defun C:UP ( / ss) 
 (setq ss (ssget)) 
 (command "_.move" ss "" '(0 0 0) '(0 0 50)) 
 (princ "\nПередвинули ") (princ) 
)
Александр Ривилис вне форума  
 
Непрочитано 15.05.2005, 16:51
#39
Torino


 
Регистрация: 21.08.2003
Штаб
Сообщений: 943
<phrase 1=


...повтор...
Torino вне форума  
 
Непрочитано 15.05.2005, 17:03
#40
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,754
Отправить сообщение для Огурец с помощью Skype™


Уважаемый bdfy!
Если у Вас вдруг престали работать PAN и ZOOM то может Вы просто перешли где-то в перспективные проекции? Для них характерно, что работает только 3D ORBIT (без сахара), и только нем же в меню правой кнопки Projection=>Parallel опцию Perspective можно покинуть.
Огурец вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Можно ли вместо отрезков чертить сразу двумя паралельными линиями

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно в Автокаде чертить сразу в масштабе? Student AutoCAD 199 23.07.2010 17:09
Москва не сразу строится Perezz!! Разное 20 21.04.2009 23:52
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46