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

VUVUZELA

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

    210
  • Đã tham gia

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

  • Ngày trúng

    4

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


  1. Chào bác VUVUZELA

    Dạo này mình bận rộn quá nên ít thời gian ngó ngàng đến Lisp. Về vấn đề mã hóa lisp, *.fas , *.vlx thực ra mình không để tâm nhiều. Sở dĩ mình chỉ chơi file *.fas là vì mình viết chương trình theo Project. Các hộp thoại mình viết luôn trên nền file lisp chứ không đưa ra file *.dcl riêng.

    Mình đang có một tham vọng là viết một chương trình để quản lý luôn cả Project nguồn của mình (vd: quản lý hàm, quản lý biến,quản lý kết quả...) vì thực ra Project do thằng Vlide cung cấp chỉ đáp ứng được phần nào. Khi viết chương trình lớn, với nhiều tầng nhiều lớp, nhiều người cùng viết thì cần một chương trình quản lý mạnh hơn.

    Mình chỉ viết chương trình để phục vụ công việc, không nghĩ đến bán nên không bận tâm nhiều đến vấn đề bảo mật. Cách bảo mật tốt nhất hiện nay của mình là... chỉ mình biết, chỉ mình dùng.

     

    hehe

    Từ ngày xài vlide đến giờ lại không để ý cái tính năng quản lý Project của nó

    Xài AutoCad R14 quen rồi nên cổ hủ thật, thật là "ếch ngồi đáy giếng", xấu hổ quá :D

    Hay, đúng là từ ngày vào trang www.cadviet.com lại học được nhiều chiêu thức mới lạ, gặp nhiều "cao thủ" để mở mang được tầm mắt, thấy trời cao đất rộng thế nào

    Chân thành cảm ơn các bác !


  2. Mình cũng đang nghiên cứu cách mã hoá hay nhất

    Tại thấy 1 điều lạ là trên forum là ai cũng mã hoá bằng *.vlx để bảo mật

    Riêng chỉ có bác cao thủ này là xài *.fas (nên chắc chắn có cái hay) mà thôi nên mới thắc mắc đặt dấu hỏi vậy

    Chứ mình không thích hack của ng khác và cũng như bác ketxu đã nói là phát triển ý tưởng của mình nhanh hơn dò code

    Vì khi tự mã hoá *.vlx (hoặc *.fas) bằng các p2 thông thường của Vlide của mình rồi tự thử decompiler thì thấy ... :wub:

    Nên quá hãi vì vậy muốn học hỏi kinh nghiệm và mình mới phát hiện ra cách mã hoá hay nhất bằng cách kết hợp giữa mã hoá file *.fas như trên và các file hộp thoại *.dcl ==> *.vlx chống decompiler rất tuyệt vời.

    Vì vậy muốn học hỏi và trao đổi thêm vậy thôi


  3. hình như trong nova không hiểu lệnh in bạn àh, mình load ra bảng và thử xả block lẫn rectang mà khi preview no ra trắng tinh, hay plot thì không thấy in được, cad 2007 thi vẵn ok, load vào nova thi không được :-(

     

    Có thể là do trong Nova thì tỷ lệ bản vẽ là 1/1000 (không phải là tỷ lệ 1/1) nên rất có thể trong thuật toán của bạn í có chút nhầm lẫn khi định dạng tỷ lệ in không chính xác (nhỏ quá so với bản vẽ A3) nên bạn có thể thấy toàn là trắng tinh vậy thôi

    :rolleyes:

    • Vote tăng 1

  4. Đọc hoài không hiểu ý bác. Ý bác là có nhiều định dạng fas khác nhau chăng?

    và như thế sẽ có thể tạo ra 2 file fas có cấu trúc hoàn toàn khác nhau từ cùng 1 file nguồn là LSP?

     

    Còn cách tạo ra file fas thì trước đến giờ mình chỉ biết 2 cách: Make application cùng với VLX và Make project fas từ Project. và cả 2 cách đều fải sử dụng Vlide.

    Có 1 vài phần mềm (chắc bác cũng biết rồi) có thể chuyển đổi VLX thành fas. có thể coi là cách thứ 3 cũng được.

     

    Ý mình muốn là bảo mật các file *.lsp 1 cách hiệu quả nhất

    Ngày xưa thằng AutoCad R14 có sử dụng Vlide có tính năng dịch từ *.lsp sang *.arx (rất hay) nhưng không tương thích với các modul AutoCad 2004 trở lên. Còn Vlide bây giờ chỉ cho phép dịch *.lsp sang *.vlx (hoặc *.fas) mà độ bảo mật thế nào thì bác biết rồi

    Lang thang trên CadViêt.com tìm phương án bảo mật tối ưu thì thấy có file định dạng *.fas

    http://www.cadviet.com/forum/index.php?showtopic=9110

    có độ bảo mật tốt (chống decompiler hiệu quả) mà không biết tác giả xài chương trình nào cả

    Nên mình muốn học hỏi thêm

    Mong các bác chỉ giáo


  5. Anh có thể giải thích chi tiết hơn về vlisp-compile đưọc không?

    Em ngu quá mới nghe lần đầu. Thanks!

     

    Bạn thử xem đoạn mã hóa từ file *.lsp sang *.fas nhanh chóng này nhé

     

    (defun c:cltf (/ lsp fas lst)

    (if (setq lsp (getfiled "Select a file in source folder" "" "lsp" 2))

    (progn

    (setq lsp (vl-filename-directory lsp))

    (if (setq fas (getfiled "Select a file in destination folder" (strcat lsp "\\") "" 2))

    (setq fas (vl-filename-directory fas))

    );if

    );progn

    );if

    (if (and lsp fas)

    (progn

    (setq lst (vl-directory-files lsp "*.lsp" 1))

    (foreach x lst

    (vlisp-compile 'st (strcat lsp x) (strcat fas (substr x 1 ( - (strlen x) 4)) ".fas"))

    );foreach

    );progn

    );if

    (princ)

    );defun

    [/cođe]

    • Vote tăng 1

  6. Không biết mình có nhầm hay không, nhưng hình như bạn đã hiểu nhầm ý của nataca

    Vuvuzela: Mình cũng không tìm thấy đoạn code đóng 1 thư mục trong link bạn gửi.

     

    Ban đầu thì ý tưởng của bọn mình là kiểm tra xem window có đang mở thư mục chứa file bản vẽ hiện hành hay không? nếu có thì khi gõ lệnh QE sẽ không mở thêm nữa bởi sau khi dùng lệnh này 1 thời gian sẽ nảy sinh tính lười, không chịu đưa con chuột xuống start bar để mở thử mục có sẵn lên, vài lần QE là start bar đã chật kín. các bạn thử giải quyết theo hướng này xem thế nào.

    PS: nếu dùng (startapp "explorer.exe"(getvar "DWGPREFIX")) thì không fải lăn tăn gì về vấn đề này.

     

    Vô mục này theo dõi tiếp nhé

    http://www.cadtutor.net/forum/showthread.php?58129-How-to-open-and-close-a-Folder-by-visual-lisp

    :rolleyes:


  7. -> Cách này rất ổn. Nó dùng "Shell.Application" để liên kết với windows.

    - Tiếp theo là vấn đề thứ 2 của topic: Mở ra được rồi nhưng làm cách nào để đóng một thư mục đang mở hoặc để không mở trùng một thư mục đã mở trước. Mình thử tìm hiểu nhưng chưa nghĩ ra cách. Mọi người thử nghĩ tiếp xem sao. :)

     

    Ban thu nghien cuu doan ma xem thu nhe

     

    http://forums.augi.com/showthread.php?t=60673

    • Vote tăng 2

  8. Cám ơn Bác đã quan tâm!

    Vấn đề don các text đánh dấu thì em gộp chung với lại nút chọn đối tượng. Khi ấn nút chọn đối tượng thì chương trình sẽ xoá hết các text đánh dấu trước khi chọn đối tượng. Vì em không muốn phát sinh thêm nút nên làm như vậy. Bác có cao kiến gì để em sửa. Các text đó không ảnh hưởng gì đến lúc in vì nó nằm trong layer không cho in.

     

    Bác chỉ cần tạo 1 TEXT xiên (= layer Defpoints, chiều cao chữ lớn) theo line màu xanh là được rồi (không cần vẽ thêm line cho rắc rối)

    Người dùng PLOT xong có thể dùng lệnh :

    1. Command : SSX (để lọc TEXT xieen có layer Defpoints)

    2. Command : ERASE => select object : P => là nhanh nhất


  9. Các kế đó em làm hết rồi Bác ạ. Vợ em nó khôn lắm Bắt bài hết

     

    Thế thì bác dùng 1 trong 2 kế cuối cừng sau đây thôi :

    1. Ve sầu thoát xác : Đề nghị Công ty bố trí đi công tác xa hoặc đi làm đêm, thêm giờ trên công ty mà có thời gian nghiên cứu

    2. Tẩu vi thượng sách (không phải xử bác bỏ vợ à nghen) : Bỏ luôn đam mê lập trình, tung các mã nguồn AutoLisp lên diễn đàn cho anh em nó nghiên cứu tiếp, mình chỉ việc down về mà xài cho nó khỏe bác ạ.

    Cái gì nó cũng có 2 mặt bác ạ

    Lấy vợ khôn cũng có cái sướng và cái khổ của nó

    he he

    :D

    • Vote tăng 1

  10. Thế nhưng vợ nào có hiểu mình. Thế mới phải khổ. Nhiều khi vợ còn bảo "anh chọn em hay anh chọn cái máy tính" thế có đau không.

     

    Hehe

    Đối với trường hợp này thì phải dùng chiến thuật khác bác ạ

    Phải dùng Kế vu hồi của Tôn Vũ khi xưa đánh thắng quân Sở mà thôi

    Kế này bác phải chọn phương pháp đi vòng kết hợp với ám thị vợ cho vợ hiểu :

    - Lâu lâu nếu bác có đánh quả nào thì về đưa tiền cho vợ nói là "anh lập trình Lisp được chừng ấy" cho vợ nó mừng

    - Vợ nó không cho xài máy tính thì dùng giấy bút ghi ra thuật toán (giả đò suy nghĩ cau có mặt mày vào làm như nghiêm trọng ấy). Vợ có đụng vào thì la làng to lên : trời ơi em làm mất của anh mất chục triệu rồi, làm mất biết bao nhiêu ý tưởng trong đầu của anh rồi, giời ơi là giời (vợ nó mà nhớ lại lúc bác đưa tiền như trên thì chắc nó cũng có cảm giác ân hận và tiếc nuối lắm)

    - Đang xài máy tính mà nó biểu giữ con hoặc nhờ làm việc gì thì bác cứ làm bộ nhăn nhó, khó chịu càng nhiều vào càng tốt (nếu bác có đi rửa chén thì lựa mấy chén bể lỡ tay làm vở 1 vài cái xem) hoặc chọc cho đứa con khóc ré lên (đừng đánh em nó tội) ... thì bữa sau chắc nó không nhờ vả đâu nhỉ?

    ...

    Xong rồi bác nhớ dỗ dành em nó : chở đi chơi, ăn nhà hàng, uống cà phê ... nhé

    Không thì tối nó cho ra ghế salon nằm một mình thì nguy bác ạ.

    :lol:

    • Vote tăng 1

  11. nova 4.01 gồm 2 module. 1 dùng cho cad14 và 1 dùng cho cad2000 (vào thư mục cài đặt của nó sẽ thấy các module này đuợc đóng gói riêng biệt)

    ai cũng biết như vậy nhưng chẳng ai muốn dùng module dành cho cad2000 thì cũng fải có nguyên nhân sâu xa cậu ạ. mình có cái khoá cứng màu tím tím danh cho module cad2000 đây. bạn nào thích mình cho không :lol:

     

    Nguyên sâu xa là gì thế cậu

    Nó hay bị lỗi à ?


  12. Cám ơn bạn, đây là file khi chuyển sang AUTOCAD. Bạn giúp mình với nhé

    http://www.cadviet.com/upfiles/3/mat_bang_tinh_san_lap_topo_tuan.dwg

     

    Cái này bạn cần chạy chương trình Nova hoặc Topo (trên mạng đầy)

    Bấm lệnh : LTG (thành lập lưới tứ giác) cho Nova đọc các điểm PROXY đó (vì chỉ có thằng Nova mới hiểu các mã định dạng của nó thôi)

    Sau đó điền và nối các diểm cao trình : CDT

    nó sẽ ra text cao độ bạn cần

    :rolleyes:


  13. 1. Type AIM2 at the AutoCAD command line, press the settings button.

    >>> Mình gõ lệnh AIM2 ở dòng lệnh của Cad thì chương trình báo là không có lệnh này?

     

    Nếu có thể bạn uninstal AutoCad R14 đi

    Cài đặt AutoCad 2000 vô

    Sau đó cài Nova-TDN 4.01 thì nó sẽ nhận diện được Nova chạy trên AutoCad 2000

    Từ đó bạn zoom, pan ... thoải mái và nhẹ nhàng hơn

    ;)


  14. Các bác thông cảm, sờ-băm 1 chút cho đỡ xì-chét.

     

    "Keng thẻng quá trời ơi, muốn đi ngủ nhưng chẳng được, những ý tưởng dang dở, nếu không viết thì quên mất, muốn viết thì ..."

     

    hề hề : "Con cá trong lờ đỏ hoe con mắt - Con cá ngòai lờ ngúc ngoắc muốn zô"

     

    hihi

    Ai mà lỡ dính vô AutoLisp là như dính thuốc ... rồi

    Kinh Phật thường gọi là : "Nghiệp chướng, nghiệp chướng đấy thôi"

    Vợ mà có quấy rồi khi đang viết thì cứ đọc thần chú : "Anh nghiên cứu kiếm tiền lo mẹ con em chứ ai "

    ...

    :lol:


  15. chào các bác!

    Em mới học autolisp.Em đang vướng mắc trong bài toán:xác định 1 điểm xem có nằm trong đa giác kin hay không?nếu có thì xuất toạ độ điểm đó sang file txt.Mong các bác giúp đỡ

     

    Bác cứ nghiên cứu đoạn Autolisp này thử nhé

     

    ;;======================================================================;;
    ;;	DETERMINING IF A POINT LIES ON THE INTERIOR OF A POLYGON	;;
    ;;======================================================================;;
    
    (defun insidep (pt ent / big flag obj1 obj2 obj3 p1 p2 small)
     (vl-load-com)
     (if (and pt ent)
       (progn
         (setq obj1 (vlax-ename->vla-object (car ent)))
         (setq obj2 (car (vlax-invoke obj1 'Offset 0.001))
        obj3 (car (vlax-invoke obj1 'Offset -0.001)))
         (if (> (vla-get-area obj2)(vla-get-area obj3))
    (progn
      (set 'big obj2)
      (set 'small obj3))
    (progn
      (set 'big obj3)
      (set 'small obj2)))
         (setq p1 (vlax-curve-getClosestPointTo big pt)
        p2 (vlax-curve-getClosestPointTo small pt))
         (if (> (distance pt p1)(distance pt p2))
    (setq flag T)
    (setq flag nil))
         (mapcar (function (lambda (x)
    		  (progn
    		    (vla-delete x)
    		    (vlax-release-object x))))
          (list big small))
         )
       )
     flag
      )
    
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    (defun @Inside (PIQ	 Object	  /	   ClosestPoint
    	ClosestParam	  Sample   Start    End	     P1
    	P2	 P	  a1	   a2	    Defl
           )
    
     (setq Sample 0.2)
    
     (vl-load-com)
     (or (= (type @delta) 'SUBR)
         (defun @delta (a1 a2)
    (cond
      ((> a1 (+ a2 pi))
       (+ a2 pi pi (- a1))
      )
      ((> a2 (+ a1 pi))
       (- a2 a1 pi pi)
      )
      (1 (- a2 a1))
    )
         )
     )
     (and
       (cond
         ((not Object)
          (prompt "  No object provided.")
         )
         ((= (type Object) 'VLA-Object))
         ((= (type Object) 'Ename)
          (setq Object (vlax-ename->vla-object Object))
         )
         (1 (prompt "  Improper object type."))
       )
       (or
         (and
    (< 1 (vl-list-length PIQ) 4)
    (vl-every 'numberp PIQ)
         )
         (prompt " Improper point value.")
       )
       (or
         (not
    (vl-catch-all-error-p
      (setq	Start
    	 (vl-catch-all-apply
    	   'vlax-curve-getStartPoint
    	   (list Object)
    	 )
      )
    )
         )
         (prompt "  Object is not a curve.")
       )
       (or
         (equal Start (vlax-curve-getendpoint Object) 1e-10)
         (prompt "  Curve is not closed.")
       )
       (setq P (trans PIQ 1 0))		; PIQ in WCS
       (setq ClosestPoint
       (vlax-curve-getclosestpointto Object P) ; In WCS
       )
       (not (equal P ClosestPoint 1e-10))	; in WCS
       (setq ClosestParam (vlax-curve-getparamatpoint Object ClosestPoint))
       (setq ClosestPoint (trans ClosestPoint 0 1)) ; convert to UCS
       (setq End (vlax-curve-getEndparam Object))
       (setq P1   0.0
      P2   Sample
      Defl 0.0
       )
       (setq a1 (angle PIQ (trans Start 0 1))) ; in UCS
       (while (<= P2 End)
         (setq P2 (min P2 End))
           (if (< P1 ClosestParam P2)
    (setq a2   (angle PIQ ClosestPoint)
          Defl (+ Defl (@delta a1 a2))
          a1   a2
    )
         )
    
         (while (not (setq P (vlax-curve-getPointAtParam Object P2)))
    (setq P2 (+ P2 Sample))
         )
         (setq a2	 (angle PIQ (trans P 0 1)) ; in UCS
        Defl (+ Defl (@delta a1 a2))
        a1	 a2
        P1	 P2
        P2	 (+ P2 Sample)
         )
       )
    
       (> (abs Defl) 4)
     )
    )
    ;;;;;;*************
    (defun C:ITest (/ Object P)
     (if (setq Object (car (entsel "\nSelect curve: ")))
       (while (setq P (getpoint "\nPoint: "))
         (prin1 (@Inside P Object))
       )
     )
     (princ)
    )
    
    

    • Vote tăng 1

  16. Nếu bạn đã dùng quen Nova thì trong Nova ko thể bốc được kl bao đất sét, vai địa. toàn làm bằng thủ công trên cad thôi. Bạn nên nghiên cứu về phần mềm mới VN road thì sẽ làm được các việc trên dễ dàng. Bữa này người ta chuyển qua dùng VN nhiều rùi. Chúc bạn thành công. Thiết kế được đường MN thì sợ gì đường đồng bằng.

     

    VNRoad cũng có cái hay và cái dỡ

    Nó ứng dụng công nghệ quản lý đới tượng theo kiểu PROXY nên rất khó lấy được các dữ liệu mở rông của nó để viết những phần mềm tiện ích nhỏ theo ý tưởng của người thiết kế

    ;)


  17. Thanks bạn.mặc dù không thuộc lĩnh vực của mình nhưng thấy đây là thành quả khá công phu và có tính liên kết cao.Chúc bạn thành công :)

    P/S : Lúc trước đọc những 2pic Autolisp cách đây 2 năm,mình thấy có kha khá câu hỏi ngô nghê của Vuzu về lisp, không ngờ bạn đã nghiên cứu được 10 năm,quả là Danh nhân bất lộ tướng, thật đáng nể.Một lần nữa chúc bạn thành công

     

    Từ hồi xưa đến giờ chỉ toàn gặp chê bai không à, nhưng mình lấy đó là động lực phát triển

    Cám ơn bạn đã động viên rất nhiều

×