Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Interpoleerimise lisp märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
ogre111
HV vaatleja

liitunud: 13.07.2009




sõnum 20.06.2010 10:51:32 Interpoleerimise lisp vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Interpoleerimise lisp
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
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.