Chuyển đến nội dung
Diễn đàn CADViet

LoveLisp

Thành viên
  • Số lượng nội dung

    191
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi LoveLisp


  1. Theo mình, về toán học, tất cả các đường không thẳng đều có bán kính, kể cả Spline. Tuy nhiên, bán kính của nó có thể thay đổi nhưng tại một điểm xác định thì chỉ có duy nhất một giá trị bán kính mà thôi (tương tự như tiếp tuyến và pháp tuyến vậy).

    Với AutoCAD, có lẽ chỉ có đường tròn (hoặc tương tự, như arc hay pline, donut...) là có bán kính, các loại đường cong khác thì nó không quản lý được giá trị này.

    Theo mình, elip cũng là một dạng của Spline, có bán kính thay đổi liên tục theo tọa độ điểm.

    • Vote tăng 1

  2. Mình không biết dùng hàm Lambda nên không hiểu cách tính toán các góc như thế nào cả, bác Hà vui lòng hướng dẫn một chút được không?

    (getvar "ViewCtr")=(list x y)

    (getvar "ViewSize")=h

    (getvar "ScreenSize")=(list a b )

     

    Như vậy, các góc d1(x1, y1) và d2(x2, y2) được tính toán như thế nào?

     

    Mình tìm được rồi:

    x1=x-h*(a/b )*0.5__________y1=y-h*0.5 (góc dưới bên trái)

    x2=x+h*(a/b )*0.5__________y2=y+h*0.5 (góc trên bên phải)

    Cám ơn bạn Tue_NV đã giúp đỡ!


  3. AutoCAD kiểm soát vị trí của bản vẽ thông qua biến "ViewCtr" và "ViewSize". Cả hai biến này đều Read only và có thể điều khiển thông qua các lệnh Zoom và Pan. Nếu bạn thu nhỏ cửa sổ AutoCAD và co kéo các cạnh biên thì các biến này cũng tự động thay đổi theo.

     

    Trong Model, mình muốn vẽ một hình chữ nhật bao quanh khung nhìn hiện tại, liệu có được không?(nghĩa là hình chữ nhật bao quanh phần nền đen mặc định của AutoCAD, kể cả việc thu nhỏ và co kéo cửa sổ).

     

    hehe, nói và đố vui chứ mình ... không có lời giải, vì biến "ViewCtr" là tọa độ điểm, còn ViewSize là chiều cao khung nhìn, mình không biết cách nào để lấy chiều rộng của khung nhìn cả.


  4. Xin chào! Mình là dân giao thông, cũng từng dùng Nova và VNRoad, nhưng cũng không hiểu được câu hỏi của bạn NguyenNgocSon. AutoCAD không có khái niệm "đối tượng hiện hành", nó là một khái niệm mới do bạn tự đưa ra, vì vậy bạn cần diễn giải để người khác có thể hiểu được. Theo cách nói của bạn (ở #3), thì điều bạn muốn là:

     

    - Gán (P)Line hiện hành

    - Chèn block dọc theo (P)Line đó

     

    Như vậy đúng chưa bạn? Nếu đúng như vậy thì vấn đề không có gì phức tạp cả, có thể viết một lisp làm các việc sau:

     

    Lần chạy lệnh đầu tiên:

    - Chỉ định một (P)Line gán vào biến PLineHienHanh (không khai báo biến, nghĩa là không hủy sau khi kết thúc lệnh)

    - Rải block (nào đó) dọc theo biến PLineHienHanh (bằng lệnh Measure hoặc Divide).

     

    Các lần chạy lệnh sau:

    - Rải block (mà không cần hỏi lại PLineHienHanh, nhưng có tùy chọn cho phép thay đổi PLineHienHanh).


  5. Những cái gì gọi là đơn vị thì không phá vỡ được nữa bạn ạ! Nhỡ phá vỡ được đường tròn, rồi bạn muốn phá vỡ tiếp LINE, POINT thì chắc là gay lắm đây, hehe...

    Nhưng bạn cứ nói rõ yêu cầu, cụ thể là bạn muốn phá vỡ nó ra thành cái gì? Thành đa giác n cạnh hay thành các point, v.v... biết đâu sẽ có người giúp được.


  6. Ngày xưa mình đã gặp vấn đề như thế này, sau đó mày mò học LISP cũng viết ra một cái để tự dùng, xin chia sẻ cùng bạn. Nói thật, nó củ chuối lắm, nhưng rất tiện dụng (ít ra là đối với mình), xin post lên đây hy vọng giúp được bạn.

    http://www.mediafire...n6ijy25uuuxky6o

     

    Sau khi tải file Net.lsp, bạn gõ lệnh NET, nó cung cấp 2 tùy chọn là xuất và nhận file *.net (chứa toàn bộ layer và nét in của layer đó). Bạn có thể dễ dàng tạo ra một file *.net chuẩn và import nó vào các bản vẽ bạn muốn.


  7. Đúng, mình muốn y như bạn Tue_NV (ở #11), tiếc là bạn chưa hướng dẫn cách làm.

    Nhưng mình đã tìm được cách làm rồi, xin post ra đây để những ai cần có thể nhanh chóng thực hiện được:

     

    1. Tải và cài đặt font Vnmono.ttf tại đây: http://www.mediafire...icn3esxi567stu1 (không cần khởi động lại windows).

    2. Trong Visual Lisp, nhấn Ctrl+N để tạo một file mới.

    3. Vào menu Tools\\Window Attributes\\Font... để chọn font Vnmono.

    4. Chuyển bộ gõ (unikey, vietkey...) về TCVN3 và gõ tiếng Việt có dấu! Sướng! ( ^_^)

     

    Để dễ nhận biết, dòng đầu tiên của file *.lsp nên là: ;<<<Su dung font TCVN3>>

    Cám ơn mọi người đã giúp đỡ!

    • Vote tăng 3

  8. Đây đúng là các yêu cầu của việc đóng gói phần mềm. Nó bao gồm cả việc tạo các khóa Registry nữa.

    Bạn có thể tham khảo các chương trình viết trên nền CAD (Bên cầu đường có các phần mềm Nova, Topo, HS, của Hài Hòa; VNRoad của TDT; Thiết kế Cống của Phạm Hồng Nhân; v.v..).

    Bạn cần dùng đến phần mềm của hãng thứ 3 để làm việc này, như bạn tvgtyb08 đã nêu, và nó yêu cầu cần phải có những kiến thức nhất định về hệ điều hành (quản lý file, registry, thư mục tạm...) bạn ạ!


  9. Viết hộp thoại cho AutoLisp thật là khó khăn bởi toàn bộ đều được mô tả bằng các câu lệnh chứ không trực quan như VB.

    Mình tìm được phần mềm OpenDCL với lời giới thiệu là "Thay thế hạn chế của DCL", nó có thể tương tác với AutoLisp và cùng với lisp để kết xuất thành file VLX.

    Mình chưa biết nhiều về DCL, mong các cao thủ xem và góp ý.

    Link:

    http://sourceforge.n...rojects/opendcl


  10.  

    Không thể nào xảy ra trường hợp trên được, nếu nói như bạn LoveLisp thì nó "đối xứng nội dung" Text àh...... KO BAO GIỜ có chuyện đó.

    Nếu có thì khi đối xứng 1 attribute thì nó sẽ làm thay đổi điểm chèn của Text chứ ko ảnh hưởng gì đến nội dung cả.

     

    Bạn đã vội vàng rồi!! Mình nói là nó bao gồm 2 attribute cơ mà, chứ phải 1 đâu!! Dấu cộng có thể là text hay hai line cũng được. Nếu chưa hình dung được bạn hãy thử tạo ra một block như vậy rồi đối xứng nó, bạn sẽ thấy kết quả như mình nói.

×