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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп - установить центр эллипса, по подобию команды РЗМЦЕНТР для круга?

Лисп - установить центр эллипса, по подобию команды РЗМЦЕНТР для круга?

Ответ
Поиск в этой теме
Непрочитано 02.09.2022, 12:06 #1
Лисп - установить центр эллипса, по подобию команды РЗМЦЕНТР для круга?
Ingpro
 
Регистрация: 11.07.2022
Сообщений: 495

Если через лисп можно установить центр эллипса, по подобию команды РЗМЦЕНТР для круга,
то получим центр прямоугольника также. Возможно ли по такому принципу получить центр прямоугольника, но без вывода эллипса на чертеж? Или другим способом получить центр прямоугольника, например, через диагонали...
Или установить оси прямоугольника (если ещё и ассоциативные...) - это как отдельный лисп.
Ну и отдельно лисп только для эллипса - центр эллипса.

Миниатюры
Нажмите на изображение для увеличения
Название: Центр эллипса, прямоугольника.png
Просмотров: 51
Размер:	16.2 Кб
ID:	249643  

Просмотров: 3544
 
Непрочитано 02.09.2022, 13:13
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


берете вычислительную геометрию и пишете себе хоть с построением, хоть без...
Сергей812 вне форума  
 
Непрочитано 02.09.2022, 13:45
#3
progettista


 
Регистрация: 22.05.2009
Москва
Сообщений: 210


http://lee-mac.com/centreline.html
progettista вне форума  
 
Автор темы   Непрочитано 02.09.2022, 14:09
#4
Ingpro


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


progettista, спасибо
Ingpro вне форума  
 
Автор темы   Непрочитано 02.09.2022, 14:28
#5
Ingpro


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


А можно подправить код Centreline, чтобы просто ставился крестик в эллипсе (по главным осям), как в круге и не запрашивал
Specify Length & Direction of Centreline (укажите длину и направление осевой линии)?
И с прямоугольником нет решения...
Миниатюры
Нажмите на изображение для увеличения
Название: эллипс.png
Просмотров: 16
Размер:	14.3 Кб
ID:	249652  
Ingpro вне форума  
 
Непрочитано 02.09.2022, 15:51
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от Ingpro Посмотреть сообщение
А можно подправить код Centreline, чтобы просто ставился крестик в эллипсе (по главным осям),
у эллипса есть DXF группа 10: Центральная точка (в МСК)
Сергей812 вне форума  
 
Автор темы   Непрочитано 02.09.2022, 16:20
#7
Ingpro


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
у эллипса есть DXF группа 10: Центральная точка (в МСК)
А дальше что, куда это? Поясните, пожалуйста...
Ingpro вне форума  
 
Непрочитано 02.09.2022, 16:58
#8
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,041


Цитата:
Сообщение от Ingpro Посмотреть сообщение
А дальше что, куда это?
без понятия, вы же свой код не выложили, в чем у вас заминка случилась. В общих чертах - выбрали примитив, получили у него группу 10, нарисовали крестик двумя отрезками - отступив по координатам на какую-то величину от полученного центра.
Сергей812 вне форума  
 
Автор темы   Непрочитано 02.09.2022, 19:10
#9
Ingpro


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


У меня кода нет, я не программист, а можно в коде lee-mac "centreline" что-то подправить? Наверное, отступить по координатам на какую-то величину от полученного центра не получится из-за возможных различных размеров эллипсов... Например, центр круга устанавливается текущим размерным стилем, от этого зависит размер крестика.
http://lee-mac.com/centreline.html
Ingpro вне форума  
 
Непрочитано 03.09.2022, 05:09
#10
name02


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Например, центр круга устанавливается текущим размерным стилем, от этого зависит размер крестика.
Что-то вообще не понятно. Что за центр круга? От чего "от этого" зависит размер крестика?
В указанном лиспе центровые линии нарисованы простыми отрезками, которые, как известно, никакого отношения к размерным стилям не имеют.

На форуме многие готовы помочь с написанием кода, но пожалуйста, формулируйте задачи четко!
name02 вне форума  
 
Непрочитано 03.09.2022, 08:34
#11
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,680


Размер крестика может зависеть от значения переменной 'dimcen.
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 03.09.2022, 13:33
#12
Ingpro


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Что-то вообще не понятно. Что за центр круга? От чего "от этого" зависит размер крестика?
Как же ещё четче можно сформулировать "установить центр эллипса, по подобию команды РЗМЦЕНТР для круга".
В AutoCad есть команда РЗМЦЕНТР для круга и дуги. Набираешь команду, выбираешь круги (дуги) и проставляются крестики в центре.
Для эллипса эта команда не работает. Можно это сделать с помощью лисп? Т.е. установить центр эллипса...
Ingpro вне форума  
 
Непрочитано 03.09.2022, 15:08
#13
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,982


Цитата:
Сообщение от Ingpro Посмотреть сообщение
У меня кода нет, я не программист, а можно в коде lee-mac "centreline" что-то подправить? Наверное, отступить по координатам на какую-то величину от полученного центра не получится из-за возможных различных размеров эллипсов... Например, центр круга устанавливается текущим размерным стилем, от этого зависит размер крестика.
http://lee-mac.com/centreline.html
Подправленное:

Код:
[Выделить все]
 
;;--------------------=={ Centerline }==----------------------;;
;;                                                            ;;
;;  Creates a pair of centerlines for Arcs, Circles, Ellipses ;;
;;and Elliptical arcs WITHOUT a user-defined length and angle.;;
;;------------------------------------------------------------;;
;;  Author: Lee Mac, Copyright © 2013 - www.lee-mac.com       ;;
;; Modification: https://forum.dwg.ru/showthread.php?p=2004481;;
;;------------------------------------------------------------;;
;;  Version 1.2    -    13-08-2013                            ;;
;;------------------------------------------------------------;;

(defun c:cline (/ ang dis ent pt1 pt2 pt3 k)
  (if
    (progn
      (while
	(progn (setvar 'errno 0)
	       (setq
		 ent (car (entsel "\nSelect Arc, Circle or Ellipse: "))
	       )
	       (cond
		 ((= 7 (getvar 'errno))
		  (princ "\nMissed, try again.")
		 )
		 ((= 'ename (type ent))
		  (if (not (wcmatch (cdr (assoc 0 (entget ent)))
				    "CIRCLE,ARC,ELLIPSE"
			   )
		      )
		    (princ "\nInvalid Object Selected.")
		  )
		 )
	       )
	)
      )
      (= 'ename (type ent))
    )
     (progn
       (if (= "ELLIPSE" (cdr (assoc 0 (entget ent))))
	 (setq pt1 (trans (cdr (assoc 10 (entget ent))) ent 1)
	       pt3 (trans (cdr (assoc 11 (entget ent))) ent 1)
	       pt2 (mapcar '+ pt1 pt3)
	       k   (cdr (assoc 40 (entget ent)))
	       ang (angle pt1 pt2)
	       dis (distance pt1 pt2)
	 )
	 (setq pt1 (trans (cdr (assoc 10 (entget ent))) ent 1)
	       k   1.0
	       ang 0.0
	       dis (cdr (assoc 40 (entget ent)))
	 )
       )
       (repeat 2
	 (entmake
	   (list
	     '(0 . "LINE")
	     (cons 10 (trans (polar pt1 ang dis) 1 0))
	     (cons 11 (trans (polar pt1 ang (- dis)) 1 0))
	   )
	 )
	 (setq ang (+ ang (/ pi 2.0))
	       dis (* k (- dis))
	 )
       )
     )
  )
  (princ)
)
SetQ вне форума  
 
Автор темы   Непрочитано 03.09.2022, 22:28
#14
Ingpro


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


Лисп работает как надо, см. миниатюру. Спасибо, SetQ!!! А с прямоугольниками также может получиться?..
Миниатюры
Нажмите на изображение для увеличения
Название: центр эллипса-круга.png
Просмотров: 12
Размер:	26.6 Кб
ID:	249672  

Последний раз редактировалось Ingpro, 03.09.2022 в 22:38.
Ingpro вне форума  
 
Непрочитано 04.09.2022, 00:23
1 | #15
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,982


Цитата:
Сообщение от Ingpro Посмотреть сообщение
А с прямоугольниками также может получиться?..
Небольшое изменение https://forum.dwg.ru/showpost.php?p=...8&postcount=11
Код:
[Выделить все]
 
;;; построение осей в произвольно выбранных прямоугольниках
;;; 4 августа 2022г.
(defun c:ar (/ i ssp rec coor vert p1 p2 p3 p4 ang1 ang2 ang pt1 pt2 pt3 pt4)
 (vl-load-com)
; (vl-cmdf "_.zoom" "_e")
 (setq i -1)
 (setq ssp (ssget '((0 . "LWPOLYLINE") (70 . 1))))
 (while (< i (1- (sslength ssp)))
  (setq rec  (entget (ssname ssp (setq i (1+ i))))
        coor (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) rec))
        vert (length coor)
  )
  (if (= vert 4)
   (progn (setq p1   (nth 0 coor)
                p2   (nth 1 coor)
                p3   (nth 2 coor)
                p4   (nth 3 coor)
                ang1 (angle p1 p2)
                ang2 (angle p2 p3)
                ang  (abs (- ang2 ang1))
          )
          (if (equal ang (* 1.5 pi) 1e-6)
           (setq ang (* 0.5 pi))
          )
          (if (equal ang (* 0.5 pi) 1e-6)
           (progn (setq pt1 (mapcar '* (mapcar '+ p1 p2) '(0.5 0.5)))
                  (setq pt2 (mapcar '* (mapcar '+ p3 p4) '(0.5 0.5)))
                  (setq pt3 (mapcar '* (mapcar '+ p2 p3) '(0.5 0.5)))
                  (setq pt4 (mapcar '* (mapcar '+ p1 p4) '(0.5 0.5)))
                  (vl-cmdf "_line" pt1 pt2 "")
                  (vl-cmdf "_line" pt3 pt4 "")
           )
          )
   )
  )
 )
)

Последний раз редактировалось SetQ, 04.09.2022 в 12:57.
SetQ вне форума  
 
Автор темы   Непрочитано 04.09.2022, 09:02
| 1 #16
Ingpro


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


И с прямоугольниками получилось!
SetQ, Вы Мастер! Спасибо, что Вы есть, спасибо за Ваш труд! Успехов во всём!

----- добавлено через ~5 мин. -----
А можно ещё внести небольшую поправку. При вводе команды, меняется вид (показывает всё). Это неудобно, т.к. бывают объемные чертежи. Можно оставить текущий вид чертежа? Спасибо...
Миниатюры
Нажмите на изображение для увеличения
Название: оси-rec.png
Просмотров: 17
Размер:	13.2 Кб
ID:	249677  
Ingpro вне форума  
 
Непрочитано 04.09.2022, 11:36
1 | #17
1958


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


Цитата:
Сообщение от Ingpro Посмотреть сообщение
Можно оставить текущий вид чертежа?
в начале строки (vl-cmdf "_.zoom" "_e")
поставьте точку запятой ;(vl-cmdf "_.zoom" "_e") или удалите её.
1958 вне форума  
 
Непрочитано 04.09.2022, 12:58
1 | #18
SetQ

конструктор
 
Регистрация: 21.07.2007
Петрозаводск
Сообщений: 1,982


Цитата:
Сообщение от 1958 Посмотреть сообщение
в начале строки (vl-cmdf "_.zoom" "_e")
поставьте точку запятой ;(vl-cmdf "_.zoom" "_e") или удалите её.
Добавлено в п. 15.
SetQ вне форума  
 
Автор темы   Непрочитано 04.09.2022, 13:11
#19
Ingpro


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


Хорошо, всем спасибо.
Ingpro вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Лисп - установить центр эллипса, по подобию команды РЗМЦЕНТР для круга?

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как из ObjectArx (.Net) вызвать функцию Лисп, передать в нее параметры и получить измененные параметры назад? nickname2019 Программирование 9 16.04.2020 06:16
А можно-ли установить слайд на иконку команды? Kirill_Ja Программирование 5 14.04.2013 11:45
Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды? overband LISP 43 07.02.2013 14:47
Варианты контекстного меню, вызываемого в процессе работы команды hwd Программирование 14 24.12.2012 11:02
ЛИСП: не работает из лиспа вызов команды _clip cj_lex LISP 2 21.04.2012 16:32