Jumat, 17 Mei 2013

Mathematical Functions

Semoga Posting Kolom Blog GRATIS Download Software Transtool 10 Terbaru Full Version | Software Penerjemah Bahasa Inggris VS Bahasa Indonesia bisa bermanfaat.

Download Software Transtool Versi 10.0





Mathematical Functions in AutoCAD
Example: The catenary function

by Héctor Monroy, BSCE, MSCE, MSEC
CAD Manager. CSA group, Inc.
 
 
Sometimes engineers lose one of their most powerful tools when they use one of their most powerful tools -- the mathematical tool that's right inside the software.
AutoCAD is very good drafting software for making arcs and lines, but sometimes this simple view of things is not sufficient to represent typical engineering graphics. For example: if we have a cable supported by two towers, we need to define catenary curve to represent the cable, yet AutoCAD doesn't have a "catenary" command. Also, if you need to analyze a beam deflection there isn't an easy way to do it.
The real CAD tool power is the possibility of using CAD with a geometric calculator, not only for measuring areas and distances, but to graph complex functions. This article brings you a small AutoLISP routine to demonstrate how to graph mathematical functions and parametric equations.
If you know AutoLISP, skip the next two paragraphs. If you don't know AutoLISP, you'll need to understand how to write mathematical expressions in AutoLISP.
First rule: All AutoLISP expressions are written between parentheses.
Second rule: all mathematical expressions are written in prefix notation.
Third rule: mathematic operations between real numbers produce real numbers, between integers produce integers and between integers, and real produce real.
Examples:
1 + 3 is (+ 1 3) in AutoLISP
1 + 2 / 4 is (+ 1 (/ 2 4)) in AutoLISP
(+ 1 3) = 4
(+ 1.0 3) = 4.0
(/ 5 3) = 1
(/ 5.0 3) =1.66667

To understand in depth, see your AutoLISP manual.

EVALUATING FUNCTIONS IN THE XY PLANE
Typically, AutoCAD users work in the XY plane, X values increasing left to right and Y values increasing bottom to top. In the graphfx.lsp file, the GraphFx AutoLISP function evaluates a mathematical expression in the form Y=F(X) and returns a sorting list with the evaluated points.
The AutoLISP function has four arguments: the mathematical function Y=F(X) in AutoLISP terms, the first X value, the last X value and the increasing value to X.
The AutoLISP function Printpntlst graphs a 3DPOLYLINE using a list with sorted points.
For example to generate a list with evaluated points using the trigonometric function sin(x) between 0 and 10 increasing x in 0.1, you need to write the following expression in the AutoCAD command line:
(graphFx '(sin x) 0 10 0.1)
To print the points, write
(Printpntlst (graphFx '(sin x) 0 10 0.1))


sin(x) graphic
Also, you can generate more complex and practical graphs. For example, the following equation defines the deflection curve for a propped cantilever beam with a uniform load (q):


to express the last equation in AutoLISP you need to write the following line:
(* (/ (* q x x) (* 48 E I)) (+ (* 3 L L) (* -5 L x) (* 2 x x)))
If the length (L) of the beam is 10m and simplifying and scaling the expression only for demonstration we have:
(printpntlst (graphFx '(* x x -0.0005 (+ 300 (* -50 x) (* 2 x x))) 0 10 0.1))


Deflection curve for a propped cantilever beam

EVALUATING PARAMETRIC FUNCIONS IN THE XYZ SPACE
If we have a graph described by three functions, one for X coordinate, one for Y coordinate, one for Z coordinate and a common parameter we can use the GraphPar AutoLISP function (graphfx.lsp).
This AutoLISP function has six arguments: three mathematical functions X=F(q), Y=F(q) and Z=F(q) in AutoLISP terms, the first q parameter value, the last q parameter value and the increasing value of q.
For example, we can describe such parabolic motion with parametric equations in the XY plane using a time parameter q measured in time units from the initial projection point:








Expressing the last equations in AutoLISP we have:
(+ X0 (* Vx0 q))
(+ Y0 (* Vy0 q) (* 0.5 g q q))
0
If q start in 0 and end in 200, X0=0, Y0=0 and simplifying and scaling the parametric function we have:
(printpntlst (graphpar '(* 100 q) '(- (* 100 q) (* q q)) '0 0 200 1))


Parabolic motion
THE CABLE PROBLEM
One of the most typical problems in engineering is to fix a cable between two points. The function to describe the shape is a catenary. The mathematical expression is:



Where w is the weight per unit length of the cable, t is the tension developed in the cable, and y0 is the minimum height of the cable.
AutoLISP don't have the hyperbolic cosine, but that is not a problem since we can define it with the following function
(defun cosh(angles / angles)
(/ (/ (+ (exp angles)(exp (* angles -1))) 2))
)
In the catenary.lsp file we have a routine to print a cable between two points defined the points in AutoCAD, the weight per unit length of the cable and the tension. The file has three additional functions: hyperbolic cosine (cosh), hyperbolic sine (sinh), and arc hyperbolic sine (arcsinh)
Below we can see the graphFx AutoLISP use in the c:catenary function:
(printpntlst (graphFx '(+ (* global_c (- (cosh (/ (- x global_xv) global_c)) 1)) global_yv) x1 x2 1.0))


Cable between two points

CONCLUSION
With the GraphFx and GraphPar AutoLISP routines we can graphic mathematical functions, also we can include the routines inside others routines within we like to have only the kernel of a specific problem (i.e. The cable problem).
 


[an error occurred while processing this directive]





Kamis, 16 Mei 2013

Pemula Acad Lisp.3







Masalah untuk program rutin tertentu terkadang mengalami gangguan ketika loading atau berjalan, walaupun Hal ini tidak selalu terjadi tetapi cukup menjengkelkan.
Untuk menekan ini kita dapat menggunakan (princ) fungsi seperti:


(defun c:testline () <
        ;define the function
        (setq a (getpoint "\nEnter First Point : "))
        ;get the first point
        (setq b (getpoint "\nEnter Second Point : "))
        ;get the second point (command "Line" a b "")
        ;draw the line (princ) ;clean running
)       ;end defun
(princ)
;clean loading /span>


-------------------------------------------------------------------------------------------------------------------------------------- 
1  2  3

Pemula Acad Lisp.2







Kita sekarang mencoba untuk "menyimpan" rutinitas AutoLISP dalam sebuah file.
File AutoLISP adalah file teks ASCII sederhana dengan ekstensi "LSP".
Buka Notepad atau editor teks sederhana lain dan ketik/copas berikut ini:

(defun testline ()
      ;define the function
      (setq a (getpoint "\nEnter First Point : "))
      ;get the first point
      (setq b (getpoint "\nEnter Second Point : "))
      ;get the second point (command "Line" a b "")
      ;draw the line
)     ;end defun

Sekarang, save file ini sebagai

     "testline.lsp",

untuk menyimpannya sebagai file teks ASCII dan memastikan bahwa telah disimpan dalam sebuah direktori jalur pencarian AutoCAD. 
Sekarang buka AutoCAD dan ketik ini:

     (load "testline")

Hal ini akan memuat fungsi ke dalam memori.


Apabila kita tidak mengetahui tempat menyimpan “direktori jalur pencarian AutoCAD” maka sebaiknya simpan dimana saja yang menurut anda lebih mudah dan aman.

Dan untuk memuat fungsi ke dalam memori/membukanya pada autoCad adalah sbb:

Pada menu Tools --> AutoLISP --> Load Application….




Perhatikan jalur pada gambar .. :


Sekarang ketik pada command prompt: . .

     (testline)

 Fungsi Anda sekarang sedang dijalankan.















Coba perhatikan program yang satu ini…
Disini kita akan mengedit coding rutin ini agar bertindak seperti perintah AutoCAD umum nya:

(defun c:testline () 
       ;define the function 
       (setq a (getpoint "\nEnter First Point : "))
       ;get the first point (setq b 
       (getpoint "\nEnter Second Point : ")) 
       ;get the second point 
       (command "Line" a b "") 
       ;draw the line 
)      ;end defun

Penambahan nama fungsi dengan c: Membuat kita tidak harus melampirkan tanda kurung ketika menjalankan program.

      (load "testline")

     testline



-------------------------------------------------------------------------------------------------------------------------------------- 
1  2  3

Pemula Acad Lisp.1







Kita mulai dengan sesuatu yang sangat sederhana. yaitu mengetik suatu perintah pada command prompt: . .
Jalankan AutoCad. Dan ketik atau copas (copy paste) coding di bawah ini pada command :. . .

   (alert "Maaf saya lagi belajar") 

Selajutnya tekan enter.
Hasilnya adalah . . . . .. Itulah pemrograman AutoLISP sederhana dari command prompt: . .

AutoLISP adalah Coding Program yang ditulis agar AutoCAD melakukan sesuatu.

Seperti yang baru kita lakukan datas, bahwa menggunakan coding ("alert") akan menghasilkan fungsi kotak dialog yang ditampilkan pada layar.

Contoh lain.

     (setq a (getpoint)) 

Ketik/copas coding diatas di command prompt: . .
dan tekan enter:.
Kemudian klik/pilih titik atau klik di mana saja di layar Cad anda.
Maka akan muncul di command prompt: . .koordinat titik tersebut

     (misalnya). (496.04 555.06 0.0)
    artinya x = 496.04 y = 555.06 z = 0.0 


AutoLisp coding : (setq a (getpoint)) Bisa diartikan Dapatkan dan simpan nilai x, y dan z dari titik sebagai daftar dalam variabel "a".

Sekarang ketik coding ini pada command prompt: . . !a
Dan tekan enter.
Maka kita akan melihat nilai yang tersimpan di varibel “a”.
Jadi, setiap kali Anda ingin memeriksa variabel, cukup hanya menyertakan "!" didepan nama variabel.

Untuk lebih lengkapnya sekarang Coba yang ini:

      (setq a ( getpoint "\nChoose a Point : ")) 

Dan tekan enter.
Apakah Anda memperhatikan bagaimana Penampilan pada command prompt: . .? 

Semua fungsi AutoLISP dibatasi oleh tanda kurung.
Hal ini untuk mempermudah mengevaluasi fungsi lain.
Contoh:

(perintah1 (perintah2 (perintahlain)))
Dapat juga ditulis sbb:

    (perintah1
     (perintah2 
        (perintahlain) 
  ) 
     )

Kita juga dapat menambahkan komentar ke coding. Didahului dengan "titik koma"
"Titik koma (;)" oleh Autolisp dianggap sebagai komentar dan bukan program.

     (perintah1  
          (perintah2 
               (perintahlain) ;ini program1 
          ) ; ini program2 
     ) ; dan ini program lain 


--------------------------------------------------------------------------------------------------------------------------------------

Sekarang kita buat sebuah program yang agak kompleks.
Ketik/copas pada command prompt: setiap coding dibawah ini, satu per satu. Dan tekan "Enter", kemudian klik/memilih titik.

     (setq a (getpoint "\nEnter First Point : "))

Klik "Enter" dan pilih titik pertama.

     (setq b (getpoint "\nEnter Second Point : "))

Klik "Enter" dan pilih titik kedua.

     (command "Line" a b "")

Tekan "Enter" lagi.

Maka hasilnya adalah Sebuah garis dari titik satu ke titik dua.
Coding pemrograman adalah fungsi yang digunakan untuk memberitahu AutoCad apa yang ingin Anda lakukan.
       "Line" Coding peggambaran garis
        a variable "a" tempat meyimpan titik a
        b variable "b" tempat meyimpan titik b
        "" Enter menutup perintah. --------------------------------------------------------------------------------------------------------------------------------------


Tapi apakah kita harus mengetikkan semua coding ini setiap kali kita akan menggunakan nya.? Tentu saja ini merupakan rutinitas yang memusingkan . .! ! Baiklah kita lanjutkan …………………………. Rutinitas ini dapat kita simpan dalam sebuah file AutoLISP.

-------------------------------------------------------------------------------------------------------------------------------------- 
2  3
--------------------------------------------------------------------------------------------------------------------------------------