Author Topic: some questions  (Read 784 times)

0 Members and 1 Guest are viewing this topic.

masao

  • Newt
  • Posts: 97
some questions
« on: June 17, 2023, 03:08:10 AM »
if line angle same , why can not get ang5 ang6. :sniffles:

ribarm

  • Gator
  • Posts: 3308
  • Marko Ribar, architect
Re: some questions
« Reply #1 on: June 17, 2023, 01:42:12 PM »
Here, I think I corrected it... See if this is what you need...

Code - Auto/Visual Lisp: [Select]
  1. (defun c:vv2 ( / cmd osm en1 en2 osm en1_data pts ptm px py pte ptn pxa pya en2_data pts1 ptm1 ptm1 px1 py1 pte1 ptn1 pxa1 pya1 pt1 pt2 pt3 pt4 a ang1 ang2 ang3 ang4 ang5 ang6 po po1 r dm1 ucsf )
  2.  
  3.   (defun *error* ( m )
  4.     (if osm
  5.       (setvar "osmode" osm)
  6.     )
  7.     (if cmd
  8.       (setvar "cmdecho" cmd)
  9.     )
  10.     (if m
  11.       (prompt m)
  12.     )
  13.     (princ)
  14.   )
  15.  
  16.   (setq osm (getvar "osmode"))
  17.   (setq cmd (getvar "cmdecho"))
  18.   (setvar "osmode" 0)
  19.   (setvar "cmdecho" 0)
  20.   (while (and (not en1) (not en2))
  21.     (setq en1 (entsel "\n->select first line : "))
  22.     (while (not en1)
  23.       (setq en1 (entsel "\nMissed...->not first select : "))
  24.     )
  25.     (setq en2 (entsel "\n->select second line : "))
  26.     (while (or (not en2) (equal (car en2) (car en1)))
  27.       (if (not en2)
  28.         (setq en2 (entsel "\nMissed...->select second line : "))
  29.         (princ "->cant select same primitive")
  30.       )
  31.     )
  32.   )
  33.   (initget 7)
  34.   (setq r (getdist "\nPick or specify circle radius : "))
  35.   (setq dm1 (* (* r 2) 0.33));move distance
  36.   (command "_.undo" "_begin")
  37.   (if (= 0 (getvar "worlducs"))
  38.     (progn
  39.       (command "_.ucs" "_world")
  40.       (setq ucsf t)
  41.     )
  42.   )
  43.   (setq en1_data (entget (car en1)))
  44.   (setq pts (assoc 10 en1_data))
  45.   (setq ptm (cdr pts))
  46.   (setq px (car ptm))
  47.   (setq py (cadr ptm))
  48.   (setq pte (assoc 11 en1_data))
  49.   (setq ptn (cdr pte))
  50.   (setq pxa (car ptn))
  51.   (setq pya (cadr ptn));first line
  52.   (setq en2_data (entget (car en2)))
  53.   (setq pts1 (assoc 10 en2_data))
  54.   (setq ptm1 (cdr pts1))
  55.   (setq px1 (car ptm1))
  56.   (setq py1 (cadr ptm1))
  57.   (setq pte1 (assoc 11 en2_data))
  58.   (setq ptn1 (cdr pte1))
  59.   (setq pxa1 (car ptn1))
  60.   (setq pya1 (cadr ptn1));second line
  61.   (setq pt1 (list px py))
  62.   (setq pt2 (list pxa pya))
  63.   (setq pt3 (list px1 py1))
  64.   (setq pt4 (list pxa1 pya1))
  65.   (setq a (inters pt1 pt2 pt3 pt4 nil));Intersection
  66.   (setq ang1 (angle a pt1))
  67.   (setq ang2 (angle a pt2))
  68.   (setq ang3 (angle a pt3))
  69.   (setq ang4 (angle a pt4))
  70.   (cond
  71.     ( (equal ang1 ang3 1e-6)
  72.       (setq ang5 ang2)
  73.       (setq ang6 ang4)
  74.     )
  75.     ( (equal ang1 ang4 1e-6)
  76.       (setq ang5 ang2)
  77.       (setq ang6 ang3)
  78.     )
  79.     ( (equal ang2 ang3 1e-6)
  80.       (setq ang5 ang1)
  81.       (setq ang6 ang4)
  82.     )
  83.     ( (equal ang2 ang4 1e-6)
  84.       (setq ang5 ang1)
  85.       (setq ang6 ang3)
  86.     )
  87.     ( (equal ang1 ang2 1e-6)
  88.       (setq ang5 ang1)
  89.       (setq ang6 ang3)
  90.     )
  91.     ( (equal ang3 ang4 1e-6)
  92.       (setq ang5 ang2)
  93.       (setq ang6 ang4)
  94.     )
  95.   )
  96.   (setq po (polar a ang5 dm1))
  97.   (setq po1 (polar a ang6 dm1))
  98.   (command "_.circle" "_non" a r)
  99.   (command "_.mirror" (entlast) "" "_non" po "_non" po1 "y")
  100.   (if ucsf
  101.     (command "_.ucs" "_previous")
  102.   )
  103.   (command "_.undo" "_end")
  104.   (*error* nil)
  105. )
  106.  

HTH.
M.R.
Marko Ribar, d.i.a. (graduated engineer of architecture)

:)

M.R. on Youtube