QUẢNG CÁO ĐẦU TRANG

Collapse

Thông báo

Collapse
No announcement yet.

Visual Lisp

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • tdhtkcd
    replied
    Ðề: Visual Lisp

    Các bác cho em hỏi tý.
    em viết 1 đoạn lisp nhỏ phục vụ cho công việc.
    Em có dùng vòng lặp để vẽ đường đen và đường đỏ theo kiểu :
    1.Nhập cự ly
    2.Nhập cao độ
    3.quay lại 1.
    Nếu cự ly không nhập thì kết thúc lặp
    Nhưng có cái dở là em chưa biết cài undo mark vào đâu cho nó đỡ khổ nếu trót nhập cự ly (khoảng cách lẻ) hoặc cao độ sai
    Mong các bác chỉ giáo.
    Em gửi kèm file mời các bác xài thử.
    (viết trong rừng Cúc Phương)

    Leave a comment:


  • tien2005
    replied
    Ðề: Visual Lisp

    Nguyên văn bởi HOÀNG TRUNG HẬU-00X3C
    Hơi rườm rà vì em mới học (ko tải file được nên copy thể này, các bác thông cảm):
    ;Ve chan khay va gia co mai ta luy
    (defun c:taluy (/ ss Alist x0 y0 x1 y1 b1 b2 b3 h1 h2 htl mid donvi ble le Alist1 xx yy xx1 yy1 goc gle a b c d x2 y2 pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12 pt13 pt14 pt15 pt16 pt17 pt18 pt19 pt20 pt21)
    (setvar "cmdecho" 0)
    .......
    Để việc kiểm tra việc thực hiện đoạn code Auto Lisp dể dàng Bạn nên (setvar "cmdecho" 1) mục đích là sau khi chương trình chạy bị lổi và dừng lại Bạn bấm F2 (text window) để biết chương trình bị lổi ở đoạn lệnh nào, sau khi chương trình hoàn chỉnh thì (setvar "cmdecho" 0)

    Leave a comment:


  • tien2005
    replied
    Ðề: Visual Lisp

    Nguyên văn bởi HOÀNG TRUNG HẬU-00X3C
    Em dùng hàm ssget để chọn một đường thẳng, sau đó em muốn lấy điểm đầu và cuối đoạn thẳng đó. Em đã dùng kết hợp các hàm như sau: (card (assoc '10 (entget (ssget)))): lấy ra tọa độ x nhưng không được , hình như nó chỉ áp dụng cho loại enname là entnext.
    Mong các bác giúp em, lấy ra tọa độ theo kiểu này. Em xin cám ơn!
    Bạn thử sử dụng hàm này xem có giải quyết được vấn đề của bạn chưa?
    (DEFUN C:tdo()
    ;chỉ chọn các đối tượng LINE
    (SETQ ALIST (entget (ssname (SSGET) 0))
    x0 (CADR (ASSOC 10 ALIST))
    y0 (car(CddR (ASSOC 10 ALIST)))
    x1 (CADR (ASSOC 11 ALIST))
    y1 (car(CddR (ASSOC 11 ALIST)))
    )
    (princ (strcat "\nx0 : " (rtos x0 2 3)))
    (princ (strcat "\ny0 : " (rtos y0 2 3)))
    (princ (strcat "\nx1 : " (rtos x1 2 3)))
    (princ (strcat "\ny1 : " (rtos y1 2 3)))
    (princ)
    )

    Leave a comment:


  • Đồng Viết Thiện
    replied
    Ðề: Visual Lisp

    File hướng dẫn cài đặt & sử dụng FASTCAD dạng *.pdf ver7.0.
    Attached Files

    Leave a comment:


  • Đồng Viết Thiện
    replied
    Ðề: Visual Lisp

    Nguyên văn bởi Tu ACC
    Cam on ban Dong Viet Thien da dua len dien dan mot chuong trinh hay. Toi down ve va cai nhu trong huong dan nhung chua su dung duoc, ban co the huong dan ky hon khong? Hinh nhu chuong trinh con thieu mot so file nao do ban a!Rat mong ban hoi am som.Thank!
    không biết bạn bị kẹt ở đâu? Ở khâu cài đặt hay khâu sử dụng, bạn phải nói rõ hơn. Nhưng có ma71y điều cần chú ý như sau:
    1- Phải khởi động lại CAD sau khi cài đặt.
    1- Hầu như tất cả các lệnh trong Menu "Ket Cau" chỉ thực hiện được sau khi bạn thực hiện động tác này 01 lần duy nhất là: "Khoi tao ban ve" trong menu "Ket Cau". Chúc bạn Thành Công.
    Last edited by Đồng Viết Thiện; 06-05-2006, 01:13 PM.

    Leave a comment:


  • Đồng Viết Thiện
    replied
    Ðề: Visual Lisp

    Đây là 1 chương trình nhỏ do mình viết để tự dùng lấy, CT này dùng để hỗ trợ triển khai bản vẽ KC. Mong các bạn xài thử và cho ý kiến, mình kg viết được bộ cài đặt cho nên các bạn chịu khó tự cài lấy (đoc nội dung từ file huongdan.txt). Thank.
    Attached Files

    Leave a comment:


  • RNDCE
    replied
    Ðề: Visual Lisp

    Anh Lâm kiểm tra xem dùm em đoạn lisp dưới đây
    Mục đích của em là :
    Từ một hình chữ nhật có sẵn trên bản vẽ với hai cạnh là L1, L2 -> cần tạo ra một hình chữ nhật mới nằm bên trong hình chữ nhật cũ với các cạnh là (L1-2d, L2-2d) trong đó d=min(0.25L1, 0.25L2). Em chạy đoạn lisp trên thì kết quả cho ra tọa độ 3D của một điểm, không tạo được hình chữ nhât.

    (defun c:rt ()
    (setq olderr *error*
    *error* myerror)
    (setq pt1 (getpoint "\nFirst point of rectangle..."))
    (setq pt2 (getpoint pt1 "\nCorner of rectangle..."))
    (setq a(angle pt1 pt2)
    dis(distance pt1 pt2))
    (setq co (* dis (cos a))
    si (* dis (sin a)))
    (setq delta (min (* 0.25 co) (* 0.25 si)))
    (setq pta (polar pt1 (* 0.25 pi) (* delta (cos (/ pi 4)) ))) )
    (setq ptb (polar pta (/ pi 2.0) (- si (* 2 delta))) )
    (setq ptc (polar ptb 0 (- co (* 2 delta))) )
    (setq ptd (polar pta 0 (- co (* 2 delta))) )
    (command "_.pline" pta ptb ptc ptd "c")
    (setq *error* olderr)
    (princ)
    )

    Leave a comment:


  • Ksvtuan
    replied
    Ðề: Visual Lisp

    Anh Nguyễn Lam chỉ Cho em cách viết mã Lệnh cho nút <-Prev và Next->
    để bật qua lại cho các nút Image-button.
    Em viết chương trình thống kê thép như bản nhập liệu em không biết mã lệnh cho hai nút đó.
    Chỉ dùm em nhe

    Leave a comment:


  • thuer
    replied
    Ðề: Visual Lisp

    Nguyên văn bởi nglam_adg
    Với AutoLisp, có 3 cách gán thuộc tính hệ thống cho việc bắt điểm:
    - Gán thông qua hàm lệnh command.
    - Gán trực tiếp (bằng hàm osnap).
    - Gán toàn cục (bằng hàm setvar).
    Cách thứ nhất rất dẽ bị mất thuộc tính - không nên dùng.
    Cách thứ 2 chỉ nên dùng khi đối tượng chọn có vị trí xác định.
    Cách thứ 3 linh hoạt và "chuyên nghiệp" nhất. Thông thường, khi viết các hàm lệnh (defun), chúng ta thường gán thuộc tính cho biến hệ thống ngay từ đầu hàm lệnh và chỉ trả lại giá trị ban đầu khi kết thúc hàm lệnh đó. Cách viết này ngắn gọn và đơn giản, dễ quản lý nhưng nhược điểm là sẽ mất thuộc tính của biến hệ thống nếu dùng lệnh Undo. Tốt nhất, chỉ gán thuộc tính hệ thống khi cần và trả lại giá trị ngay sau khi thực hiện xong tác vụ.
    VD:
    (setq old_osm (getvar "Osmode")) ; Lấy giá trị bắt điểm hiện thời.
    (setvar "Osmode" (+ 1 2 4)) ; Đặt bắt điểm = End+Mid+Cen.
    (command ......)
    (setvar "Osmode" old_osm) ; Trả lại giá trị ban đầu.
    Cám ơn anh Lam nhiều. Chúc anh giáng sinh vui vẽ và một năm mới với nhiều thành công mới.

    Leave a comment:


  • thuer
    replied
    Ðề: Visual Lisp

    Nguyên văn bởi nglam_adg
    Đây là hàm bắt lỗi chương trình trong trường hợp chương trình bị dừng không đúng quy trình (Esc - Exit).
    Cấu trúc đầy đủ là:
    (defun MyErr (msg)
    (if (or
    (= msg "Function cancelled")
    (= msg "console break")
    (= msg "quit / exit abort") )
    (princ)
    (princ (strcat "\nError: " msg))
    )
    ...
    (defun .... ()
    (setq old_err *error*
    *error* MyErr)
    ...
    (setq *error* old_err)
    )

    Hàm trên sẽ thông báo lỗi gặp phải và dừng chương trình ngay lập tức, đồng thời giải phóng biến hoặc hàm gây lỗi.
    Anh lâm ơi em viết Lisp và sửa lỗi, lúc chạy và ngắt lỗi vẫn tốt nhưng có một lỗi xảy ra là sẽ mất chế độ bắt điểm nếu người dùng undo lại lệnh vừa thục hiện. Anh có cách chỉ giúp.

    Leave a comment:


  • HungCraper
    replied
    Ðề: Visual Lisp

    Sorrrrrry cac baccc!
    E thay bac TaoTao395 noi cung co cai dung, ma bac Robinho gi do noi cung dung. Nhung em man phep cac bac the nay! Thoi thi ta manh cai gi thi ta lam cai day. Tot nhat la phat trien song song cung voi cong nghẹ Bac nao di truoc cong nghe thi cung kho vi moi nguoi dau co dung duoc cai ma bac vua lam ra lai phai thay doi ca 1 he thong keo theo no. Nhung bac nao bao thu qua thi cung khong duoc!! Vi moi nguoi chay ve dich het roi ma bac van let det o xa thi cung khong xong.
    Bac TaoTao395 lap co so du lieu tren Exel roi chuyen sang cho anh CAD cung hay, Tui co nghien cưu EXel cung kha nhieu tu Version 3- 4 co no dung la bang tinh van nang day, nhung co cai la neu ma su dung khong quen thi hay bi co van de lam! Bac cung nen chuyen dan sang cai khac di, Exel tot nhat la phat trien ve Thong Ke va xu ly bieu do thoi, chu de tao co so du lieu cho cad thi lau lam va phai qua nhieu cong doạn Bac nen nghien cưu them 1 so mon nhu C,C++ hay cu chuoi thi dung Pascal nhu cac cu ta cung duoc cung nhanh lam ma xuat File chinh xac hon anh Exel cua bac nhieu. Ma neu co thoi gian thi bac dung VB thi cang hay, trong vua khoa hoc ma lai cho nhieu nguoi su dung de dang. Kien thuc la cua nhan loai ma cung nen chia xe cho moi nguoi chu.....Hehe.
    Thoi gian sau em se Post cho cac bac may cai Lisp cua em, nhung chi choi boi va tham khao thui, chu yeu phuc vu cho dan DCCT thui con cac bac ket cau thi SUPER rui em khong dam ban toi...

    Leave a comment:


  • Tran Duc Minh
    replied
    Ðề: Visual Lisp

    Em đang thắc mắc 1 chút, mong các anh chỉ dùm em:
    Giả sử trong bản vẽ Cad em tạo 1 định nghĩa thuộc tính 1 Block "cao độ", em đã ghi các cao độ tại các điểm vào 1 bản vẽ. Bây giờ vì cao độ mốc giả định bị thay đổi lên 0.3 -> tất cả các cao độ tại các điểm khác thay đổi theo. Vậy những lệnh nào của Lisp giúp em có thể lấy ra được những thuộc tính của các Block ra rồi cộng thêm 1 lượng 0.3 nữa?

    Em mò hoài mà ko biết, mong các anh giải nghĩa cụ thể từng dòng để em nắm được cách thức làm.

    Leave a comment:


  • luunhieu
    replied
    Ðề: Visual Lisp

    (setq olderr *error*
    *error* myerror
    )
    (setq *error* olderr)

    Xin vui lòng giải thích dùm mấy cái khai báo biến *error*, em không hiểu tác dụng của nó! mà thấy nhiều người viết nó, không biết câu lệnh đó làm việc như thế nào?

    Leave a comment:


  • kthung
    replied
    Ðề: Visual Lisp

    lệnh gọi (command "_dimlinear") còn thiếu mất 3 đối số. Bạn thử thay nó bằng (command "_dimlinear" PAUSE PAUSE PAUSE) thử xem. Đây là cách thử thô thiển nhất.
    Cách bạn tạo dim bằng lệnh command không chuyên lắm. Tạo bằng mã DXF hoặc VisualLisp Automation tốt hơn. Chúc thành công.

    Leave a comment:


  • kthung
    replied
    Ðề: Visual Lisp

    Các đường kích thước được tạo không nằm ở lớp hiện hành là vì lệnh : (command "_dimlinear") thực hiện sau cùng, sau cả hàm gọi : (setvar "clayer" olay).

    Leave a comment:

Working...
X