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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Делить на measurement scale

Делить на measurement scale

Ответ
Поиск в этой теме
Непрочитано 29.01.2008, 08:03
Делить на measurement scale
Бали
 
Инженер
 
Уфа
Регистрация: 23.03.2007
Сообщений: 197

Здравствуйте уважаемые знатоки!
Имею к вам вопрос по лиспу.
Суть вопроса - возможно ли используя параметр measurement scale размерной линии, задавать длинну размера по факту.
Т.е. допустим мне нужно построить размерную линию со значением 1250мм, measurement scale данной размлинии равен 200, соответственно в реале мне нужно отложить(ввести) 1250/200=6.25 единиц, как сделать так, чтобы вводимое число было равно 1250 (чтобы не делить в уме на 200 ), а лисп сам делил бы на measurement scale.
PS - Черчу в модели по старинке)
Просмотров: 21493
 
Непрочитано 29.01.2008, 16:07
#61
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Тоже самое но "направлением":
(defun c:dlf ( / orto napr a len)
(setq orto (getvar "orthomode"))
(setvar "orthomode" 1)
(setq a (getpoint "Начало")
len (/ (getreal "Размер") (getvar "dimlfac"))
napr (getpoint a "Направление"))
(setvar "orthomode" orto)
(if (> (nth 0 a) (nth 0 napr))
(command "_dimlinear" a (list (- (nth 0 a) len) (nth 1 a))))
(if (< (nth 0 a) (nth 0 napr))
(command "_dimlinear" a (list (+ (nth 0 a) len) (nth 1 a))))
(if (< (nth 1 a) (nth 1 napr))
(command "_dimlinear" a (list (nth 0 a) (+ (nth 1 a) len))))
(if (> (nth 1 a) (nth 1 napr))
(command "_dimlinear" a (list (nth 0 a) (- (nth 1 a) len))))
)
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 29.01.2008, 16:50
#62
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от CB Посмотреть сообщение
Код:
[Выделить все]
(defun c:test ( / pt pt1)
  (setq
    pt
        (getpoint
          "\nSpecify first extension line origin or <select object>: "
        ) ;_ end of getpoint
    pt1 (polar
          pt
          0.
          (/ (getdist pt "\nSpecify second extension line origin: ")
             (getvar "dimlfac")
          ) ;_ end of /
        ) ;_ end of polar
  ) ;_ end of setq
  (setvar "texteval" 1)
  (setvar "cmdecho" 1)
  (command "_DIMLINEAR" pt pt1 pause)
) ;_ end of defun
почти то что мне надо, некорректно работает при попытке поставить размлинию вертикально. Еще одна просьба) , можно ли в эту прогу добавить возможность введения второй точки не численно , а еще и графически?
Бали вне форума  
 
Автор темы   Непрочитано 29.01.2008, 16:52
#63
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Ох и запарил я наверно всем мозги, но оно того стоит!!!!! Супер полезный инструмент рождается на свет, такое не кажный день случается однако.
Бали вне форума  
 
Непрочитано 29.01.2008, 18:07
#64
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Если я правильно понял ваши смутные рассуждения
Код:
[Выделить все]
(defun c:test ( / pt pt1)
  (if (and
    (setq pt (getpoint  "\nSpecify first extension line origin or <exit>: "))
    (setq pt1 (getpoint pt "\nSpecify second extension line origin or <exit>: "))
    (setq pt1 (polar pt (angle pt pt1)(/ (distance pt pt1)(getvar "dimlfac"))))
    (setvar "texteval" 1)
    (setvar "cmdecho" 1)
    )
  (command "_DIMLINEAR" "_non" pt "_non" pt1 pause)
    )
) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 29.01.2008, 18:22
#65
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от VVA Посмотреть сообщение
Если я правильно понял ваши смутные рассуждения
Код:
[Выделить все]
(defun c:test ( / pt pt1)
  (if (and
    (setq pt (getpoint  "\nSpecify first extension line origin or <exit>: "))
    (setq pt1 (getpoint pt "\nSpecify second extension line origin or <exit>: "))
    (setq pt1 (polar pt (angle pt pt1)(/ (distance pt pt1)(getvar "dimlfac"))))
    (setvar "texteval" 1)
    (setvar "cmdecho" 1)
    )
  (command "_DIMLINEAR" "_non" pt "_non" pt1 pause)
    )
) ;_ end of defun
круто, но говоря графически я имел ввиду, что прога буит работать буквално также как просто комманда dimlinear)
Т.е. если вторая точка указывается графически(кликом), то она без изменений буит второй точкой размлинии
Бали вне форума  
 
Непрочитано 29.01.2008, 18:55
#66
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Код:
[Выделить все]
(defun c:test ( / pt pt1)
  (if (and
    (setq pt (getpoint  "\nНачало первой выносной линии <выход>: "))
    (if (setq pt1 (getpoint pt "\nНачало второй выносной линии (с пересчетом dimlfac)  <покажу точку без перечсета>: "))
        (setq pt1 (polar pt (angle pt pt1)(/ (distance pt pt1)(getvar "dimlfac"))))
        t
      )
    )
    (progn
     (setvar "texteval" 1)
     (setvar "cmdecho" 1)
     (command "_DIMLINEAR" "_non" pt )
      (if pt1 (command "_non" pt1))
      (while (> (getvar "CMDACTIVE") 0)(command pause))
      )
    )
) ;_ end of defun
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 29.01.2008, 19:03
#67
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от VVA Посмотреть сообщение
Код:
[Выделить все]
(defun c:test ( / pt pt1)
  (if (and
    (setq pt (getpoint  "\nНачало первой выносной линии <выход>: "))
    (if (setq pt1 (getpoint pt "\nНачало второй выносной линии (с пересчетом dimlfac)  <покажу точку без перечсета>: "))
        (setq pt1 (polar pt (angle pt pt1)(/ (distance pt pt1)(getvar "dimlfac"))))
        t
      )
    )
    (progn
     (setvar "texteval" 1)
     (setvar "cmdecho" 1)
     (command "_DIMLINEAR" "_non" pt )
      (if pt1 (command "_non" pt1))
      (while (> (getvar "CMDACTIVE") 0)(command pause))
      )
    )
) ;_ end of defun

великий вам респект!!!!!!!!
еще один момент - ваша прога спрашивает про пересчет, возможно ли сделать так шоб не спрашивала, а сама догадалась, что если человеки ставят точку кликом, то значит пересчитывать ничего не надо! Хотя ваше прога и так реально превзошла мои ожидания!)))
Бали вне форума  
 
Непрочитано 29.01.2008, 19:12
#68
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Только если подскажешь как догадаться, что человеки ставят точку кликом
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 29.01.2008, 19:18
#69
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от VVA Посмотреть сообщение
Только если подскажешь как догадаться, что человеки ставят точку кликом

комманда dimlinear по похожей схеме работает, я сам в программировании ничего не смыслю, но чувствую что реально можно замутить ето
Бали вне форума  
 
Автор темы   Непрочитано 29.01.2008, 19:23
#70
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Кароче я хочу написанной вами прогой полностью исключить комманду dimlinear из своего использования, для этого она должна быть максимально похожа на оригинальный dimlinear
Бали вне форума  
 
Непрочитано 29.01.2008, 19:56
#71
Profan


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


Все еще меряем пустоту. У меня тоже еще днем был простенький вариант без оптимизации:
Код:
[Выделить все]
 
(defun C:DAD ( / dlf pd1 pd2 dst)
(setq dlf (getvar "DIMLFAC"))
(setq pd1 (getpoint "\nНачало первой выносной линии: "))
(initget 3)
(setq pd2 (getpoint pd1 "\nНачало второй выносной линии или направление и расстояние: "))
(setq dst (* dlf (distance pd1 pd2)))
(princ "\nПоложение размерной линии: ")
(vl-cmdf "_dimaligned" pd1 pd2 "_t" dst pause)
(princ)
)
Подумал я, что это чепуха и не стал дорабатывать и выкладывать. Для чего строить размер в пустоте? Постройте сначала отрезок в масштабе 1:200, а потом образмерьте его.
Profan вне форума  
 
Автор темы   Непрочитано 29.01.2008, 20:00
#72
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от Profan Посмотреть сообщение
Все еще меряем пустоту. У меня тоже еще днем был простенький вариант без оптимизации:
Код:
[Выделить все]
 
(defun C:DAD ( / dlf pd1 pd2 dst)
(setq dlf (getvar "DIMLFAC"))
(setq pd1 (getpoint "\nНачало первой выносной линии: "))
(initget 3)
(setq pd2 (getpoint pd1 "\nНачало второй выносной линии или направление и расстояние: "))
(setq dst (* dlf (distance pd1 pd2)))
(princ "\nПоложение размерной линии: ")
(vl-cmdf "_dimaligned" pd1 pd2 "_t" dst pause)
(princ)
)
Подумал я, что это чепуха и не стал дорабатывать и выкладывать. Для чего строить размер в пустоте? Постройте сначала отрезок в масштабе 1:200, а потом образмерьте его.
я часто размер в пустоте рисую - удобно бывает в отдельных случаях, и еще черчу "неправильно"
Бали вне форума  
 
Непрочитано 29.01.2008, 20:15
#73
Profan


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


Так вот меня и интересует, как именно неправильно вы рисуете. Размер - это чепуха. Вот как в модели построить прямогольник из произвольной точки с размерами 1280х1024 в масштабе 1:200?
Profan вне форума  
 
Автор темы   Непрочитано 29.01.2008, 20:33
#74
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от Profan Посмотреть сообщение
Так вот меня и интересует, как именно неправильно вы рисуете. Размер - это чепуха. Вот как в модели построить прямогольник из произвольной точки с размерами 1280х1024 в масштабе 1:200?
L enter 6.4 enter 5.12 enter 6.4 enter 5.12 enter))))))))))))))
Бали вне форума  
 
Непрочитано 29.01.2008, 20:59
#75
Profan


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


Рисуете, значит, отрезками, в режиме ORTHO, направление указываете мышью, длины вычислили в уме. Я-то имел в виду "_rectangle". Но пусть так. Строите ведь вы, вычисляя в уме. Другие товарищи интересовались, как именно рисовать в масштабе, не вычисляя в уме. А вас, выходит дело, это не беспокоит. Не беспокоят абсолютные координаты, не беспокоят длины в единицах рисунка. Беспокоят только проставленные размеры?
Profan вне форума  
 
Непрочитано 29.01.2008, 21:14
#76
Profan


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


Складывается впечатление, что вы сначала хотите отрисовать размеры по программе, а потом впихнуть в эти размеры объекты. Такого я еще не видел.
Profan вне форума  
 
Автор темы   Непрочитано 29.01.2008, 21:22
#77
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от Profan Посмотреть сообщение
Рисуете, значит, отрезками, в режиме ORTHO, направление указываете мышью, длины вычислили в уме. Я-то имел в виду "_rectangle". Но пусть так. Строите ведь вы, вычисляя в уме. Другие товарищи интересовались, как именно рисовать в масштабе, не вычисляя в уме. А вас, выходит дело, это не беспокоит. Не беспокоят абсолютные координаты, не беспокоят длины в единицах рисунка. Беспокоят только проставленные размеры?
Да , вы почти правы, про проставленные размеры вы немного загнули, я тоже интересуюсь про невычесления в уме, и вариант с размлиниией прояснил бы суть искомого метода, ведь алгоритм данной проги можно было бы использовать и в dimaligned и в line и тд и тп.
Бали вне форума  
 
Непрочитано 29.01.2008, 21:34
#78
zenon

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


Цитата:
Сообщение от Бали Посмотреть сообщение
Да , вы почти правы, про проставленные размеры вы немного загнули, я тоже интересуюсь про невычесления в уме, и вариант с размлиниией прояснил бы суть искомого метода, ведь алгоритм данной проги можно было бы использовать и в dimaligned и в line и тд и тп.
Да нет Profan прав, вы получается зубы через анус лечите, теоретически можно, а вот на практике.
Переходите на черчение 1:1. А то на другую работу устроитесь там могут и не дать так извращаться, а вот наказать за задержку материально вполне могут.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 29.01.2008, 21:48
#79
Бали

Инженер
 
Регистрация: 23.03.2007
Уфа
Сообщений: 197


Цитата:
Сообщение от zenon Посмотреть сообщение
Да нет Profan прав, вы получается зубы через анус лечите, теоретически можно, а вот на практике.
Переходите на черчение 1:1. А то на другую работу устроитесь там могут и не дать так извращаться, а вот наказать за задержку материально вполне могут.
А есть общеутвержденные стандарты пользования автокадом, или может ГОСТ есть такой))) шоб работадатель мог предъявлять типа я неправильно черчу))))
Ну да ладно, тема то не об этом, а о проге которую почти уже написали до конца. Еще чуть чуть осталось.
Бали вне форума  
 
Непрочитано 29.01.2008, 21:59
#80
zenon

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


Цитата:
Сообщение от Бали Посмотреть сообщение
А есть общеутвержденные стандарты пользования автокадом, или может ГОСТ есть такой))) шоб работадатель мог предъявлять типа я неправильно черчу))))
а он ничего предьявлять не будет, просто срежет оклад или попросит написать по собственному тк задерживаешь процесс дальнейшего проектирования, или хочешь вести проект весь один???
Пойми, что не только один человек работает над проектом, а команда.
В другом месте сослуживцы просто пошлют этот проект подальше и все.
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Делить на measurement scale

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмуляция нажатия клавиш из под AutoLisp-a Supermax LISP 89 19.11.2007 14:40
Linetype Scale для слоев Werwolf AutoCAD 17 16.07.2007 14:45
Dim Scale Overall ??? Xo66iT AutoCAD 7 24.03.2006 17:37
ACAD2006. Знаки после запятой в окне Viewport Scale Control =mik= AutoCAD 2 16.06.2005 10:57
zoom scale при выводе на печать Rauf AutoCAD 3 22.01.2005 23:43