praegune kellaaeg 21.06.2025 18:17:17
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
ogre111
HV vaatleja
liitunud: 13.07.2009
|
20.06.2010 10:51:32
Interpoleerimise lisp |
|
|
Tere, oleks vaja Autocadi jaoks interpoleerimise lispi. Eesmärk on siis valida 1 punkt, kirjutada kõrgus, siis 2 punkt ja kirjutada kõrgus.
Siis peaks proge tegema ntks kõrguste 121 ja 122 vahele õigetele vahekaugustele punktid 121.25 ; 121.50; 121.75
Mul on ka mingi kood olemas, oleks vaja ainult väiksed muudatused teha. Leidsin koodi, mis interpoleeris 1 ühiku kaupa (121;122;123), mul oleks vaja 121.25 ;121.50;121:75 jne
Muutsin siis ise mõned asjad seal ära, nagu töötaks, aga kui sisestada kõrguste kohapeale natuke rohkemate komakohtadega arve (ntks 31.12134), siis viskab errori:
Pick point 1:
Enter elevation 1: 123.45
Pick point 2:
Enter elevation 2: 124.56
; error: bad DXF group: (10)
Algne kood( ei viska erroreid):
(defun c:test (/ pt1 el1 pnt1 pt1 el2 pnt2 len el1a slp d1)
(vl-load-com)
(setvar "osmode" 0)
(setvar "pdmode" 3)
(setq pt1 (getpoint "\nPick point 1: ")
el1 (getreal "\nEnter elevation 1: ")
pnt1 (list (car pt1) (cadr pt1) el1)
pt2 (getpoint pt1 "\nPick point 2: ")
el2 (getreal "\nEnter elevation 2: ")
pnt2 (list (car pt2) (cadr pt2) el2)
len (distance pnt1 pnt2)
el1a (1+(fix el1))
slp (/ (- el2 el1)(distance pnt1 pnt2))
d1 (/ (- el1a el1) slp)
)
(setq obj (vlax-ename->vla-object
(entmakex
(list
(cons 0 "LINE")
(cons 10 pnt1)
(cons 11 pnt2)
)
)
)
)
(while (< d1 len)
(entmakex
(list
(cons 0 "POINT")
(cons 10 (vlax-curve-getPointAtDist Obj d1))
)
)
(setq d1 (+ d1 (/ 1 slp)))
)
(princ)
)
|
0.25 vahedeks muudetud kood, mis viskab erroreid:
(defun c:test (/ pt1 el1 pnt1 pt1 el2 pnt2 len el1a slp d1)
(vl-load-com)
(setvar "osmode" 0)
(setvar "pdmode" 3)
(setq pt1 (getpoint "\nPick point 1: ")
el1 (getreal "\nEnter elevation 1: ")
pnt1 (list (car pt1) (cadr pt1) el1)
pt2 (getpoint pt1 "\nPick point 2: ")
el2 (getreal "\nEnter elevation 2: ")
pnt2 (list (car pt2) (cadr pt2) el2)
len (distance pnt1 pnt2)
el1a (+ 0.25 (fix el1))
slp (/ (- el2 el1)(distance pnt1 pnt2))
d1 (/ (- el1a el1) slp)
)
(setq obj (vlax-ename->vla-object
(entmakex
(list
(cons 0 "LINE")
(cons 10 pnt1)
(cons 11 pnt2)
)
)
)
)
(while (< d1 len)
(entmakex
(list
(cons 0 "POINT")
(cons 10 (vlax-curve-getPointAtDist Obj d1))
)
)
(setq d1 (+ d1 (/ 0.25 slp)))
)
(princ)
)
|
|
|
Kommentaarid: 10 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
10 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|